即使在单独的作用域中也已经定义了 Jslint 变量

Jslint variable already defined even in a separate scope?

本文关键字:定义 变量 Jslint 单独 作用域      更新时间:2023-09-26

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

即使它在不同的块中,我真的应该使用不同的变量名称吗?作用域是由 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陈述。

请参考此答案以了解变量范围(letvar):https://stackoverflow.com/a/11444416/3670089