Javascript变量声明,为什么这是合法的?

时间:2014-05-18 05:06:36

标签: javascript syntax declaration

我刚刚第一次遇到这个变量声明语法。

var myVar = (function() {
    return 1;
})();

我的两个主要问题是..

它叫什么,为什么合法?

请原谅我,如果之前已经问过这个问题,我试着四处寻找,但我不知道这个符号是什么,所以我找不到任何东西。

另外,我应该补充一下,2套括号的功能是什么?第一个包含函数,第二个函数为空。

3 个答案:

答案 0 :(得分:1)

除了定义匿名函数并立即调用它之外,我不确定这是什么。

完全合法,因为

  1. 定义匿名函数是合法的。
  2. 调用它并指定返回值也是合法的。
  3. 最终结果是myVar = 1

答案 1 :(得分:1)

自执行函数通常用于封装上下文并避免名称共谋。您在(function(){..})()中定义的任何变量都不是全局变量。

以下代码:

var same_name = 1;

var myVar = (function() {
    var same_name = 2;
    console.log(same_name);
})();

console.log(same_name);

生成此输出:

1
2

通过使用此语法,您可以避免与javascript代码中其他地方声明的全局变量发生冲突。

答案 2 :(得分:0)

这是一个匿名函数(也称为lambda函数),它立即执行,返回值(1)被赋值给变量(myVar)。它是合法的,因为规范说它是。这是许多语言中非常常见的功能。