Javascript - 为什么独占if子句中的声明被认为是重复的?

时间:2014-05-26 21:39:22

标签: javascript scope

使用以下JavaScript

if (someCondition){
   var x = ...; //Resharper warns that this is a duplicate declaration
}
else {
   var x = ...; //Resharper warns that this is a duplicate declaration
}

但范围不同?为什么这很重要?这是JavaScript独有的吗?

我在C#中使用等效代码没有得到这样的警告。

或者 - 这是一个错误的Resharper警告吗?

1 个答案:

答案 0 :(得分:6)

JavaScript中的变量默认绑定到函数范围,而不是阻止范围。块内定义的变量被提升到功能范围,这是一个非常常见的错误来源。而且你的情况也会发生什么。

Variables can be declared in block scope with let keyword虽然这需要JavaScript 1.7。