以下javascript代码
var variable = 1
console.log(variable)
{
var variable = 2
}
console.log(variable)
给出输出
1
2
考虑到范围在其他编程语言中的工作方式,我发现这非常不直观。范围内变量的重新声明不应影响范围之外的变量的值。
我在Firefox和Chromium上测试了这个。我做错了什么或这是javascript的预期行为?
作为参考,这是其他编程语言中发生的事情:
#include<stdio.h>
int main()
{
int variable=1;
printf("%i\n",variable);
{
int variable=2;
}
printf("%i\n",variable);
return 0;
}
输出:
1
1
答案 0 :(得分:1)
使用ES6,您可以使用let
,它尊重块范围
let
语句声明一个块范围局部变量,可选择将其初始化为一个值。
而不是var
声明。
var variable = 1;
console.log(variable);
{
let variable = 2;
}
console.log(variable);
&#13;