使用以下代码,JsLint警告y已在第二个块中定义。我经常这样做,并且不认为这是语法错误,因为变量是在不同的块中定义的。
我是否真的应该使用不同的变量名称,即使它位于不同的块中?范围是由if语句的代码块定义的,还是仅作用于功能块的范围?
function x() {
if (condition1) {
var y = 0;
// use y
}
if (condition2) {
var y = 20;
// use y
}
}
答案 0 :(得分:8)
宣布一次
function x() {
var y;
if (condition1) {
y = 0;
}
if (condition2) {
y = 20;
}
}
JS将来会有块范围,但它尚未广泛实施。
答案 1 :(得分:0)
if
,for
和while
语句中没有不同的范围,但功能中有。
答案 2 :(得分:0)
我知道已经对此问题接受了答案,但是我认为您正在寻找的是let
声明。
请参考以下答案以了解变量作用域(let
与var
):https://stackoverflow.com/a/11444416/3670089