我刚刚第一次遇到这个变量声明语法。
var myVar = (function() {
return 1;
})();
我的两个主要问题是..
它叫什么,为什么合法?
请原谅我,如果之前已经问过这个问题,我试着四处寻找,但我不知道这个符号是什么,所以我找不到任何东西。
另外,我应该补充一下,2套括号的功能是什么?第一个包含函数,第二个函数为空。
答案 0 :(得分:1)
除了定义匿名函数并立即调用它之外,我不确定这是什么。
完全合法,因为
最终结果是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
)。它是合法的,因为规范说它是。这是许多语言中非常常见的功能。