Javascript—为什么在exclusive if子句中的声明被认为是重复的?
使用以下JavaScriptJavascript—为什么在exclusive if子句中的声明被认为是重复的?,javascript,scope,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#中没有得到类似的警告 或者——这是错误的Resh
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警告吗?JavaScript中的变量默认绑定到函数范围,而不是块范围。块内定义的变量被提升到函数范围,这是一个非常常见的错误源。你的情况也是如此
尽管这需要JavaScript 1.7。JavaScript没有块作用域。
x
的所有声明都属于声明它们的函数。好吧,这是有道理的,我会在计时器过期时接受答案。