Tuesday, May 21, 2024
 Popular · Latest · Hot · Upcoming
45
rated 0 times [  52] [ 7]  / answers: 1 / hits: 57478  / 13 Years ago, thu, november 10, 2011, 12:00:00

Why I can write



 var foo = function(){}();


But can not



 function(){}();


Are there are any design reasons?


More From » javascript

 Answers
105

The first example is an assignment: the right-hand side is an expression, and the immediate execution of an anonymous function makes sense.



The second example is a declaration: once the closing } is hit the declaration has ended. Parens on their own don't make sense--they must contain an expression. The trailing ) is an error.



Standalone declarations must be turned into expressions:



(function() {})();  // Or...
(function() {}());


The first makes the declaration an expression, then executes the result. The second turns both declaration and execution into an expression.



See also When do I use parenthesis and when do I not?


[#89194] Wednesday, November 9, 2011, 13 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
gerardamosy

Total Points: 600
Total Questions: 116
Total Answers: 102

Location: Ukraine
Member since Tue, May 30, 2023
1 Year ago
;