This rule treats variables which are defined with var declarations as the same behavior as variables which are defined with let declarations.
Please turn no-redeclare rule off if you use this rule.
This rule aims to flag below about variables which are defined with var declaration:
- References from outside of the block which declare the variable.
- Re-declarations in a same block.
- Shadowing in a same function scope.
{
var a = 0
}
console.log(a) // not defined.for (var a = 0; ; ) {}
console.log(a) // not defined.var a = 0
var a = 0 // already defined.for (var a = 0; ; ) {
var a = 0 // already defined.
}function foo(a) {
var a = 0 // already defined.
}var a = 0
{
var a = 0 // already defined in the upper scope.
}function foo(a) {
if (Math.random() < 0.5) {
var a = 0 // already defined in the upper scope.
}
}if (Math.random() < 0.5) {
var a = 0
console.log(a)
} else {
var a = 1
console.log(a)
}