Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript—为什么在exclusive if子句中的声明被认为是重复的?_Javascript_Scope - Fatal编程技术网

Javascript—为什么在exclusive if子句中的声明被认为是重复的?

Javascript—为什么在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

使用以下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警告吗?

JavaScript中的变量默认绑定到函数范围,而不是块范围。块内定义的变量被提升到函数范围,这是一个非常常见的错误源。你的情况也是如此


尽管这需要JavaScript 1.7。

JavaScript没有块作用域。
x
的所有声明都属于声明它们的函数。好吧,这是有道理的,我会在计时器过期时接受答案。