var var 在ES5及之前的JavaScript版本中是唯一可用的变量声明关键字。 声明的变量具有函数作用域(function scope),这意味着它们只在声明它们的函数内部可见,而不是在块级作用域(如if语句或for循环)内可见。 变量可以被多次声明,而不会引发错误。 没有块级作用域,因此在块内定义的变量可以在块外部访问。
Copy code
var x =10;if(true){var x =20;}
console.log(x);// 输出 20
1
2
3
4
5
6
let let 在ES6(ECMAScript 2015)中引入,它具有块级作用域。 声明的变量在包含它们的块内部可见,而在块外部不可见。 变量不能被多次声明,即在同一个作用域内重复声明会引发错误。 用于声明需要在后续代码中重新赋值的变量。
Copy code
let x =10;if(true){let x =20;}
console.log(x);// 输出 10