Javascript 局部变量覆盖全局变量?
Javascript local variable is overriding global variable?
var x = 3;
if(1==1){
if(2==2){
var x= 5;
}
}
document.write(x); // outputs 5
所以我 运行 进行了一些测试以更好地理解本地和全局范围的概念。我认为用 关键字 var
声明 x
会创建一个局部变量并忽略父作用域中具有相同名称的任何变量。忽略,我的意思是我如何更改变量 x
而不会影响其上方范围内的相同变量。但是显然我对js变量定义的理解是错误的。能否解释一下为什么会这样?
var
在函数内部声明了一个局部变量。对于块作用域局部变量,使用 let
.
var x = 3;
if(1==1){
if(2==2){
let x = 5;
}
}
console.log(x); // prints 3
大括号 ({...}
) 不会在 JavaScript 中为 var
创建作用域。因此,当您在 {...}
侧声明具有相同名称 (x
) 的任何变量 (x
) 时,它不会创建任何新变量,但实际上会覆盖先前声明的变量。
var x = 3;
if(1==1){
if(2==2){
var x= 5;
}
}
document.write(x); // outputs 5
所以我 运行 进行了一些测试以更好地理解本地和全局范围的概念。我认为用 关键字 var
声明 x
会创建一个局部变量并忽略父作用域中具有相同名称的任何变量。忽略,我的意思是我如何更改变量 x
而不会影响其上方范围内的相同变量。但是显然我对js变量定义的理解是错误的。能否解释一下为什么会这样?
var
在函数内部声明了一个局部变量。对于块作用域局部变量,使用 let
.
var x = 3;
if(1==1){
if(2==2){
let x = 5;
}
}
console.log(x); // prints 3
大括号 ({...}
) 不会在 JavaScript 中为 var
创建作用域。因此,当您在 {...}
侧声明具有相同名称 (x
) 的任何变量 (x
) 时,它不会创建任何新变量,但实际上会覆盖先前声明的变量。