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)
}