【问题标题】:What does this syntax mean? (function () {//code})() [duplicate]这个语法是什么意思? (function () {//code})() [重复]
【发布时间】:2012-02-22 23:45:33
【问题描述】:

可能重复:
What do parentheses surrounding a JavaScript object/function/class declaration mean?
What does this javascript syntax mean?
What does this “(function(){});”, a function inside brackets, mean in javascript?

在下面的代码中,匿名函数正在执行。

var a= 1;
var b =2;           
(function() {  
    var b = 3;  
    a += b;  
})();  
document.write(a + " "+ b);

1) 在函数定义周围加上括号有什么作用?

2) 在右括号后面加上() 有什么作用?

【问题讨论】:

标签: javascript


【解决方案1】:

() 放在function() { ... } 周围使其成为表达式与语句。因为它是一个产生函数值的表达式,所以 () 最后会调用产生的函数。

考虑替代方案

function () { 
  var b = 3;
  a += b;
}();

这会产生语法错误,因为() 本质上是在尝试调用语句。

(function () {
  var b = 3;
  a += b;
});

这会产生一个永远不会被调用的function 对象。

【讨论】:

    【解决方案2】:

    你在第一行说,代码创建了一个匿名函数,然后在不带参数的情况下执行它(尾括号)

    【讨论】:

    • 不知道为什么您的答案在没有任何 cmets 的情况下被否决,因为您的答案在我的非专家 Javascript 意见中看起来有效。
    【解决方案3】:

    一个函数自己执行,如果你想创建一个作用域(或定义局部变量),因为javascript没有块作用域,所以需要一个函数。

    【讨论】:

      【解决方案4】:

      好的,你的第一个问题的答案只是覆盖了洞函数。没有它,函数将被执行,第二个是没有参数的匿名函数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-21
        • 2011-10-27
        • 1970-01-01
        • 2017-09-28
        • 2014-01-21
        相关资源
        最近更新 更多