在下面的代码中,JsLint警告说,y已经在第2个块中定义了,我经常这样做,而且不认为这是语法错误,因为变量是在不同的块中定义的。我经常这样做,并且不认为这是一个语法错误,因为变量是在不同的块中定义的。
我是否真的应该使用不同的变量名,即使它在不同的块中?范围是由if语句的代码块定义的,还是只针对一个函数块的范围?
function x() {
if (condition1) {
var y = 0;
// use y
}
if (condition2) {
var y = 20;
// use y
}
}
声明一次
function x() {
var y;
if (condition1) {
y = 0;
}
if (condition2) {
y = 20;
}
}
JS将来会有区块范围化,但目前还没有广泛实现。
里面没有不同的范围 if
, for
和 while
语句,但在函数中却有。
我知道这个问题已经有了公认的答案,但我想你要找的是一个叫做 let
语句。
请参考这个答案来理解变量作用域 (let
与 var
): https:/stackoverflow.coma114444163670089。