引自:http://es6.ruanyifeng.com
- let
- 块级作用域
- const
1.let
let
声明的变量只在它所在的代码块有效。
for
循环的计数器,就很合适使用let
命令。
var a = []; for (let i = 0; i < 10; i++) { a[i] = function () { console.log(i); }; } a[6](); // 6
注意:
1.没有变量的提升
2.不允许重复声明
2.块级作用域
ES5 只有全局作用域和函数作用域,es6增加了块级作用域,let
实际上为 JavaScript 新增了块级作用域。
function f1() { let n = 5; if (true) { let n = 10; } console.log(n); // 5 }
3.const
const
声明一个只读的常量。一旦声明,常量的值就不能改变。
const PI = 3.1415; PI // 3.1415 PI = 3; // TypeError: Assignment to constant variable.
const
声明的变量不得改变值,这意味着,const
一旦声明变量,就必须立即初始化,不能留到以后赋值。
const foo; // SyntaxError: Missing initializer in const declaration
const
的作用域与let
命令相同:只在声明所在的块级作用域内有效。
const
声明的常量,也与let
一样不可重复声明。
const
命令声明的常量也是不提升,