使用以下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警告吗?
答案 0 :(得分:6)
JavaScript中的变量默认绑定到函数范围,而不是阻止范围。块内定义的变量被提升到功能范围,这是一个非常常见的错误来源。而且你的情况也会发生什么。
Variables can be declared in block scope with let
keyword虽然这需要JavaScript 1.7。