这个语法是什么意思? (function(){// code})()

时间:2012-01-31 08:25:17

标签: javascript

  

可能重复:
  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)在右括号之后放置()会是什么?

4 个答案:

答案 0 :(得分:2)

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

考虑替代方案

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

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

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

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

答案 1 :(得分:0)

嗯,你在第一行说出来,代码创建一个匿名函数然后执行它没有参数(尾部括号)

答案 2 :(得分:0)

如果你想创建一个范围(或定义局部变量),它会自动执行它,因为javascript没有块范围,所以需要一个函数。

答案 3 :(得分:0)

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