Is there any reason to wrap anonymous JavaScript functions in braces?

前端 未结 3 2020
轻奢々
轻奢々 2020-12-19 15:02
var a = function () {
    return \'test\';
}();

console.log(a);

Answer in First Case : test

var a = (function () {
    return \'te         


        
相关标签:
3条回答
  • 2020-12-19 15:18

    It is good practice (but not required) to wrap IIFEs (Immediately Invoked Function Expressions) in parenthesis for readability. If your function is long and the reader cannot see the end, the opening parenthesis calls the readers attention to the fact that there is something special about this function expression and forces them to look at the bottom to find out what it is.

    0 讨论(0)
  • 2020-12-19 15:26

    Yes, the first one sets the variable a as an anonymous variable, while the second one sets the variable a to the result of the function.

    Edit: I read the first code wrong. The answer is no.

    0 讨论(0)
  • 2020-12-19 15:30

    The first syntax is only valid if you assign the result of the function execution to a variable, If you just want to execute the function, this form would be a syntax error:

    function(){
       return 'test';
    }();
    

    The other form is still valid, though:

    (function(){
        return 'test';
     })();
    

    Therefore the second version is more flexible and can be used more consistently.

    (The first form is not valid syntax to avoid ambiguities in the Javascript grammar.)

    0 讨论(0)
提交回复
热议问题