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

问题描述 投票:4回答:3

在下面的代码中,JsLint警告说,y已经在第2个块中定义了,我经常这样做,而且不认为这是语法错误,因为变量是在不同的块中定义的。我经常这样做,并且不认为这是一个语法错误,因为变量是在不同的块中定义的。

我是否真的应该使用不同的变量名,即使它在不同的块中?范围是由if语句的代码块定义的,还是只针对一个函数块的范围?

function x() {
  if (condition1) {
    var y = 0;
    // use y
  }
  if (condition2) {
    var y = 20;
    // use y
  }
}
javascript jslint
3个回答
8
投票

声明一次

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

JS将来会有区块范围化,但目前还没有广泛实现。


0
投票

里面没有不同的范围 if, forwhile 语句,但在函数中却有。


0
投票

我知道这个问题已经有了公认的答案,但我想你要找的是一个叫做 let 语句。

请参考这个答案来理解变量作用域 (letvar): https:/stackoverflow.coma114444163670089。

© www.soinside.com 2019 - 2024. All rights reserved.