我阅读了很多帖子并询问/回答有关javascript匿名自动执行功能,但我担心我仍然忽略了这一点。为什么这段代码显示myvar值?构造(function(){ code })()是否应该保持所有变量不在外面?
(function(){
myvar = 5;
})();
alert(myvar);
所以上面的代码和
之间有什么不同function myfunction(){
myvar = 5;
};
myfunction();
alert(myvar);
答案 0 :(得分:3)
myvar
在窗口范围内定义,因此所有人都可以访问。
如果您希望将myvar
保密,则应var
范围:
(function(){
var myvar = 5;
})();
答案 1 :(得分:2)
您未能使用var
声明“myvar”。
看看当你改变它时会发生什么:
(function(){
"use strict";
myvar = 5;
})();
答案 2 :(得分:2)
变量的作用域是javascript中的函数级别。这意味着如果在循环或if语句中声明变量,它将可用于整个函数。
在你的情况下,你的myVar可用于整个窗口,正如有人指出的那样。
如果需要在函数范围内明确地保存变量,请创建一个匿名函数,然后立即执行它,内部的所有变量都将作用于函数
(function(){
var myvar = 5;
})();
alert(typeof(myVar));
结果“未定义”