函数参数是否可以影响全局变量

时间:2013-01-28 18:27:40

标签: javascript jquery scope

我在.js文件中定义了一个全局变量。:

如果我的函数有一个与全局变量同名的参数,则该函数无法初始化全局变量:

var myvar;

function init(myvar){
    myvar= myvar;
}

但是如果我更改变量名称使全局变量和参数具有不同的名称,则该函数可以初始化全局变量:

var myvar2;

function init(myvar){
    myvar2= myvar;
}

(然后正确初始化myvar2)。

为什么会这样? javascript不允许两个在不同范围内具有相同名称的变量,因此会发生变量阴影吗?

我认为js引擎能够以与java相同的方式区分方法范围和全局范围(尽管使用this关键字)

1 个答案:

答案 0 :(得分:6)

这是正确的;全局变量正在被遮蔽。想一想。在这个声明中:

myvar = myvar;

如果没有阴影,myvar将是全局阴影,哪个是本地阴影?