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

Mat*_*att 3 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
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

jsa*_*nen 6

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

可以使用let关键字在块作用域中声明变量,尽管这需要JavaScript 1.7.