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