Pregunta

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
  }
}
¿Fue útil?

Solución

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.

Otros consejos

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top