ES6教程(一)let和const
2018-07-07  本文已影响0人 
klmhly
注意:
ES5 只有全局作用域和函数作用域
ES6的let和const是块级作用域
特点:
# 块级作用域
# 不存在变量提升
# 暂时性死区
# 不允许重复声明
1. let命令
例子1:
{
  let a = 10;
  var b = 1;
}
a // ReferenceError: a is not defined.
b // 1
在代码块之外调用这两个变量,结果let声明的变量报错,var声明的变量返回了正确的值。这表明,let声明的变量只在它所在的代码块有效。
例子2:
for循环计数器很适合用let命令。
对比  var和let的区别:
var a = [];
for (var i = 0; i < 10; i++) {
  a[i] = function () {
    console.log(i);
  };
}
a[6](); // 10
在for循环上用var声明的变量i属于全局变量,所以进行了10次循环,直到第11次退出循环的时候后,i的值是10。然后调用a[6](),此时输出的i就是全局i的值10.
var a = [];
for (let i = 0; i < 10; i++) {
  a[i] = function () {
    console.log(i);
  };
}
a[6](); // 6
对于let声明的变量i,当前的i只在本轮循环有效,所以每一次循环的i其实都是一个新的变量.最后调用a[6](),由于每轮循环函数保存的i值是不同的。所以,运行结果就是那一轮的i=6。
2. const命令
# const声明一个只读的常量。一旦声明,常量的值就不能改变
# const一旦声明变量,就必须立即初始化