https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/var
var 语句用于声明一个函数作用域或全局作用域的变量,并且可以选择将其初始化为一个值。
示例:
var x = 10
if (true) {
var x = 20
// x为20
console.log(x)
}
// x为20
console.log(x)
运行输出:
示例:
for (var x of [1, 2, 3]);
// x的值等于3
console.log(x)
运行输出:
提升:var 声明,无论它们出现在脚本中的什么位置,都会在执行脚本中的任何代码之前进行处理。在代码中的任何位置声明变量都相当于在顶部声明它。这也意味着变量可以在其声明之前被使用。这种行为被称为提升,因为变量声明似乎被移动到发生该行为的函数、静态初始化块或脚本源代码的顶部。
但还是建议始终在作用域的顶部(全局代码的顶部和函数代码的顶部)声明变量。
示例:
x = 10
console.log(x)
var x
运行输出:
只有变量的声明被提升,而变量的初始化则不会被提升。直到赋值语句被执行,变量才会被初始化。在此之前,变量的值是 undefined(但已声明)。
示例:
// 输出为undefined,因为变量的初始化不会被提升
console.log(x)
// 初始化
x = 10
console.log(x)
var x
运行输出:
使用 var 重复声明变量不会触发错误,变量的值也不会丢失,除非新的声明有初始化器。
示例:
var x = 10
var x = 20
// x的值为20
console.log(x)
var x
// x的值为20
console.log(x)
运行输出: