以下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("%in",variable);
{
int variable=2;
}
printf("%in",variable);
return 0;
}
输出:
1
1
在ES6中,您可以使用let
,它尊重块范围
let
语句声明声明块范围本地变量,可选将其初始化为一个值。
而不是var
声明。
var variable = 1;
console.log(variable);
{
let variable = 2;
}
console.log(variable);