这在javascript中意味着什么:var obj =(function(){....})()

时间:2012-06-29 08:05:00

标签: javascript

  

可能重复:
  What is the purpose of a self executing function in javascript?

拜托,有人可以向我解释这在JS中意味着什么:

var obj = (function(){ 
   // code
})()

由于

2 个答案:

答案 0 :(得分:5)

它被称为立即实例化的函数。它运行该函数,返回的值分配给obj。您可以使用它创建一个范围或类,在该范围或类中,您可以使用闭包来将某些变量保持在该范围内。有关该主题,请参阅John Resigs page

所以,如果函数看起来像这样:

var obj = (function(n){
  return 2+n;
})(3);

obj的值为5.

答案 1 :(得分:5)

这是一个立即执行的匿名函数。它的返回值已分配给obj。例如:

var obj = (function () {
    return 10;
}()); //Notice that calling parentheses can go inside or outside the others

console.log(obj); //10

它们通常用于引入新范围,因此您不会混淆代码执行的范围:

var obj = (function () {
    var something = 10; //Not available outside this anonymous function
    return something;
}());

console.log(obj); //10

请注意,由于这是一个函数 expression ,而不是函数声明,因此在结束大括号后应该有一个分号。