treehouse : what would you like to learn today?
Web Design Web Development iOS Development

Function name as variable?

  • Is it possible to use a variable as a function name?

    For example:

    
    var string = "my_function";
    string();
    

    When I try to use that, I get an error that string is not a function, but there is a function named as that?

  • Why wouldn't you just call my_function()?

    What you can do is this:

      var newVariable = function () {
          // your stuff
      });
      newVariable();
    
  • I have to make it dynamic because I'm calling it from a click and checking some things before deciding which function to call. For example I'm checking screen size and then calling functions based on that as well as another value. The two put together make up the existing function name.

  •   function my_function(){ /* do stuff */ }
      var str = 'my_function';
      window[str](); /* does stuff */
    

    works in Chrome. didn't test elsewhere.

  • Thanks @traq! So far, my testing has been successful in a few browsers!

  • Couldn't you use a Switch statement to determine which to call?

       var string = "my_function";
       switch(string)
       {
           case "function_1":
               function_1();
               break;
           case "function_2":
               function_2();
               break;
           default:
               function_default();
       }
    

    Then, if you wanted to add another possibility, all you really have to do is add a case.

  • I was thinking of using a switch statement but that would bloat the code and I was really hoping for less code to manage and hopefully a smaller file size. Looks like the method @traq suggested seems to be the better option.