refer: https://www.freecodecamp.org/chinese/news/javascript-var-let-and-const/

var
可以在全局范围声明或函数/局部范围内声明。

当在最外层函数的外部声明

var
变量时,作用域是全局的。这意味着在最外层函数的外部用
var
声明的任何变量都可以在
windows
中使用。

例如:

var tester = 'hey hi';
function newFunction() {
var hello = 'hello';
}
console.log(hello); // error: hello is not defined

var变量可以重复声明和修改

例如:

var greeter = 'hey hi';
var greeter = 'say Hello instead';

例如:

var greeter = 'hey hi';
greeter = 'say Hello instead';

 

(可以不看了。)

var可以进行变量提升:
变量提升是 JavaScript 的一种机制:在执行代码之前,变量和函数声明会移至其作用域的顶部

例如:

console.log(greeter);
var greeter = 'say hello';

在编译的时候会被理解为:

var greeter;
console.log(greeter); // greeter is undefined
greeter = 'say hello';

例如写一个test.js:

console.log(greeter);<br />
var greeter = &#39;say hello&#39;;<br />
console.log(greeter);

然后运行:

node test.js

输出:

undefined<br />
say hello