x-note
Search…
ECMAScript 6 变量及常量的声明
ES6规范中,引入了新的关键字 let 用于声明变量,以及 const 用于声明常量

let

letvar 的用法类似
1
let a = 123;
Copied!
不同之处在于:
let 的作用于只在其所属的代码块
1
var a = [];
2
for (var i = 0; i < 3; i++) {
3
var c = i;
4
a[i] = function() {
5
console.log(c);
6
};
7
}
8
a.forEach(item => {
9
item();
10
})
11
// 4
12
// 4
13
// 4
14
15
var b = [];
16
for (var i = 0; i < 3; i++) {
17
let c = i;
18
b[i] = function() {
19
console.log(c);
20
};
21
}
22
b.forEach(item => {
23
item();
24
})
25
// 0
26
// 1
27
// 2
Copied!
let 不会发生 “变量提升” 的现象
1
function f1() {
2
let n = 5;
3
if (true) {
4
let n = 10;
5
}
6
console.log(n); // 5
7
}
8
f1();
Copied!
let 不允许在相同作用域内重复声明同一个变量
1
{
2
let a = 10;
3
var a = 1;
4
}
5
// Uncaught SyntaxError: Identifier 'a' has already been declared
6
{
7
let a = 10;
8
let a = 1;
9
}
10
// Uncaught SyntaxError: Identifier 'a' has already been declared
Copied!

const

const 用于常量声明,一旦声明,参数的值就不能修改
1
const PI = 3.1415;
2
console.log(PI) // 3.1415
3
PI = 3;
4
console.log(PI) // 3.1415
Copied!
Copy link
Contents
let
const