一、 let
1.let用法类似于var,都是用来声明标量,但let所声明的变量只在【声明的代码块内】及【声明之后】有效。
{
console.log(a) // undefined
console.log(b) // Uncaught ReferenceError: b is not defined(…)
var a =10
let b = 10
}
console.log(a) // 10
console.log(b) // Uncaught ReferenceError: b is not defined(…)
2.let更适合在for循环中使用。
var a = [];
for (var i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a[6](); // 10
var a = [];
for (let i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a[6](); // 6
3.let不存在变量提升;且不允许在同一作用域内重复声明变量,因此不能在函数内重新声明变量。
a = 10
console.log(a) // 10
var a
a = 10
console.log(a) //Uncaught SyntaxError: Identifier 'a' has already been declared
let a
b = 10
console.log(b)//Uncaught SyntaxError: b is not defined
let b
二、 const
const 声明的是一个只读的变量,一旦声明,不可更改,这就意味着一旦声明就必须初始化,不然会报错,const作用域和let作用域一样.
const a //Uncaught SyntaxError: Missing initializer in const declaration
const a = 10
a = 5 // Uncaught TypeError: Assignment to constant variable.