質問

With the following code JsLint warns that y is already defined in the 2nd block. I do this fairly often and don't think it is a syntax error since the variable is defined in a different block.

Should I really be using different variable names even though it is in a different block? Is the scope defined by the code block of the if statement or only scoped for a function block?

function x() {
  if (condition1) {
    var y = 0;
    // use y
  }
  if (condition2) {
    var y = 20;
    // use y
  }
}
役に立ちましたか?

解決

Declare it once

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

JS will have block scoping in the future, but it's not widely implemented yet.

他のヒント

There is no different scope inside if, for and while statements, but there is in functions.

I know there is accepted answer to this already, but I think what you are looking for is a let statement.

Please refer to this answer to understand variable scoping (let vs var): https://stackoverflow.com/a/11444416/3670089

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top