var x = 3;
if(1==1){
if(2==2){
var x= 5;
}
}
document.write(x); // outputs 5因此,我运行了一些测试,以更好地理解本地和全球范围的概念。我认为用x关键字声明 var会创建一个局部变量,并忽略父作用域中任何同名变量。忽略,我的意思是如何在不影响上面作用域中的相同变量的情况下更改变量x。但很明显,我对js变量定义的理解是错误的。能解释一下为什么会这样吗?
发布于 2018-04-25 15:34:17
大括号({...})不为var在JavaScript中创建作用域。因此,当您在侧x中声明具有相同名称(x)的任何变量(x)时,它不会创建任何新变量,而是实际上覆盖先前声明的变量。
发布于 2018-04-25 15:32:24
var在函数中声明局部变量。对于块作用域局部变量,请使用let。
var x = 3;
if(1==1){
if(2==2){
let x = 5;
}
}
console.log(x); // prints 3https://stackoverflow.com/questions/50026128
复制相似问题