【发布时间】:2018-04-25 15:30:16
【问题描述】:
var x = 3;
if(1==1){
if(2==2){
var x= 5;
}
}
document.write(x); // outputs 5
所以我运行了一些测试来更好地理解本地和全局范围的概念。我想用 keyword var 声明 x 会创建一个局部变量并忽略父范围内具有相同名称的任何变量。忽略,我的意思是如何更改变量x 而不会影响其上方范围内的同一变量。但显然我对js变量定义的理解是错误的。请解释一下为什么会这样?
【问题讨论】:
-
您的理解是正确的,但是由于您在 if 而不是在函数内,因此您的
x具有相同的范围 -
带有
if的条件,以及像for或while这样的循环不会在JS 中创建自己的范围
标签: javascript scope global-variables local-variables