这块代码第二个为什么弹5啊? var x = 1; var y = 2; method(8) alert(x+y) function method(y) { x += 2; y += 3; alert(x+y) }
3 回答
紫衣仙女
TA贡献1839条经验 获得超15个赞
你这个问题要理解的不是变量提升,而是变量的作用域,你的代码和下面的代码是一样的,别看形参是y,实际上这是两个不同的值
var x = 1;
var y = 2;
method(8)
alert(x+y)
function method(a) {
x += 2;
a += 3;
alert(x+a)
}
烙印99
TA贡献1829条经验 获得超13个赞
函数内部变量有定义就找函数内部的变量,没定义就找全局的,函数内部的变量和全局的变量名相同,前者会覆盖后者
var x = 1;
var y = 2;
method(8)
alert(x+y)
function method(y) {
x += 2; //全局变量x=1+2
y += 3; //形参y=8+3
alert(x+y)
}
添加回答
举报
0/150
提交
取消