views:

39

answers:

3

I'm using the code:

var x = function() {return true;};

trying to set x to true, the return value of the function, but instead x is defined as the function itself. How can I set x as the return value of the function? I could easily code around this problem by using a non-inline function or some such, but it bugs me because I'm sure there must be a simple solution.

Thanks.

+5  A: 

The solution is to define the function and then invoke it (by adding the extra parentheses at the end):

var x = (function() {return true;})();

jdigital
+1  A: 

You're not executing the function, you're setting x to actually be the function.

If you had some variable y, it could take on the value of the function with something like:

var x = function(){ return true; };
var y = x();  // y is now set to true.

or alternatively execute the function in place with:

var x = (function(){ return true; })();
Mark E
A: 

Your code just defines the function and assigns it to x, the function doesn't get called. To call it, put the function in parenthesis and add () after it, like for a normal function call:

var x = (function() {return true;})();
sth