是否有任何理由将匿名JavaScript函数包装在大括号中?

Raj*_*jat 4 javascript

var a = function () {
    return 'test';
}();

console.log(a);
Run Code Online (Sandbox Code Playgroud)

第一种情况的答案:测试

var a = (function () {
    return 'test';
})();

console.log(a);
Run Code Online (Sandbox Code Playgroud)

第二种情况的答案:测试

我正在使用第一种方法来创建自动执行功能.但是,我也看到了第二种方法.这两种方法有什么不同吗?结果显然是一样的.

sth*_*sth 11

第一种语法只有在将函数执行的结果赋给变量时才有效.如果您只想执行该函数,则此表单将出现语法错误:

function(){
   return 'test';
}();
Run Code Online (Sandbox Code Playgroud)

另一种形式仍然有效:

(function(){
    return 'test';
 })();
Run Code Online (Sandbox Code Playgroud)

因此,第二个版本更灵活,可以更一致地使用.

(第一种形式不是有效的语法,以避免Javascript语法中的歧义.)