Jslint变量是否已经定义在一个单独的范围内?

时间:2013-10-16 17:43:20

标签: javascript jslint

使用以下代码,JsLint警告y已在第二个块中定义。我经常这样做,并且不认为这是语法错误,因为变量是在不同的块中定义的。

我是否真的应该使用不同的变量名称,即使它位于不同的块中?范围是由if语句的代码块定义的,还是仅作用于功能块的范围?

function x() {
  if (condition1) {
    var y = 0;
    // use y
  }
  if (condition2) {
    var y = 20;
    // use y
  }
}

3 个答案:

答案 0 :(得分:8)

宣布一次

function x() {
    var y;
    if (condition1) {
        y = 0;
    }
    if (condition2) {
        y = 20;
    }
}

JS将来会有块范围,但它尚未广泛实施。

答案 1 :(得分:0)

ifforwhile语句中没有不同的范围,但功能中有。

答案 2 :(得分:0)

我知道已经对此问题接受了答案,但是我认为您正在寻找的是let声明。

请参考以下答案以了解变量作用域(letvar):https://stackoverflow.com/a/11444416/3670089