我在.js文件中定义了一个全局变量。:
如果我的函数有一个与全局变量同名的参数,则该函数无法初始化全局变量:
var myvar;
function init(myvar){
myvar= myvar;
}
但是如果我更改变量名称使全局变量和参数具有不同的名称,则该函数可以初始化全局变量:
var myvar2;
function init(myvar){
myvar2= myvar;
}
(然后正确初始化myvar2
)。
为什么会这样? javascript不允许两个在不同范围内具有相同名称的变量,因此会发生变量阴影吗?
我认为js引擎能够以与java相同的方式区分方法范围和全局范围(尽管使用this关键字)
答案 0 :(得分:6)
这是正确的;全局变量正在被遮蔽。想一想。在这个声明中:
myvar = myvar;
如果没有阴影,myvar
将是全局阴影,哪个是本地阴影?