我阅读了很多关于 javascript 匿名自执行函数的帖子并询问/回答,但恐怕我仍然没有抓住重点。为什么这段代码显示 myvar 值?构造 (function(){ code })() 不应该让所有变量从外部不可见吗?
(function(){
myvar = 5;
})();
alert(myvar);
那么上面的代码和
function myfunction(){
myvar = 5;
};
myfunction();
alert(myvar);
?
我阅读了很多关于 javascript 匿名自执行函数的帖子并询问/回答,但恐怕我仍然没有抓住重点。为什么这段代码显示 myvar 值?构造 (function(){ code })() 不应该让所有变量从外部不可见吗?
(function(){
myvar = 5;
})();
alert(myvar);
那么上面的代码和
function myfunction(){
myvar = 5;
};
myfunction();
alert(myvar);
?
myvar在窗口范围内定义,因此所有人都可以访问。
myvar如果您想将其保密,则应使用以下范围var:
(function(){
var myvar = 5;
})();
您未能使用 声明“myvar” var。
看看当你像这样改变它时会发生什么:
(function(){
"use strict";
myvar = 5;
})();
变量的作用域是在 javascript 中的函数级别。这意味着如果您在循环或 if 语句中声明一个变量,它将可用于整个函数。
在您的情况下,正如有人已经指出的那样,您的 myVar 可用于整个窗口。
如果您需要在函数范围内显式地锁定变量,请创建一个匿名函数,然后立即执行它,其中的所有变量都将作用于该函数
(function(){
var myvar = 5;
})();
alert(typeof(myVar));
结果“未定义”