no-var

Require let or const instead of var

warn by defaultfixable

A var belongs to the whole function, not to the block it's written in, and you can read it before the line that declares it. let and const are scoped to their block and can't be used before they're declared, which turns a class of silent bugs into errors.

--fix rewrites var to let where that can't change what the code does.

This rule is on by default in TypeScript files.

Configure#

On by default as a warning. To turn it off:

bunfig.toml
[lint.rules]
"no-var" = "off" # or "error"

Examples#

example.js1 problem
for (var i = 0; i < 3; i++) {
  setTimeout(() => console.log(i)); // 3, 3, 3
}
example.jsNo problems
for (let i = 0; i < 3; i++) {
  setTimeout(() => console.log(i)); // 0, 1, 2
}