深入理解ES6一

2017-09-18  本文已影响17人  前端小兵

let声明

  1. Es6中引入块级声明,let声明的变量作用域限制在代码块中;
  2. let声明不会被提升;
  3. 在同一作用域中不能用let重复定义已经存在的标识符,会抛出错误。

const声明

  1. const声明的变量作用域也会限制在代码块中;
  2. const声明的是常量,其值一旦被设定后不可更改,每个通过const声明的常量必须进行初始化(赋值)
  3. const声明不允许修改绑定,但允许修改值;例如const声明对象,对象的值是可以修改的

临时死区的存在

循环中的块级作用域

var funcs = [];
for(var i=0;i<10;i++) {
    funcs.push(function() {
        console.log(i);
    })
}
funcs.forEach(funcion(func) {
    func(); //输出10次10 
})
var funcs = [];
for(var i=0;i<10;i++) {
    funcs.push((function(value){
        // 变量i的值在传递到这个作用域是被赋值给了value;
        // 此时这个值就不会随外部变量而变化了;
        return function() {
            console.log(value);
        }
    })(i));
}
funcs.forEach(function(func) {
    func(); //输出0,然后是1,2直到9
})
var funcs=[];
for(let i=0;i<10;i++) {
    funcs.push(function() {
        console.log(i);
    })
}
funcs.forEach(function(func) {
    func(); //输出0,然后是1,2直到9
})

全局作用域的绑定

上一篇 下一篇

猜你喜欢

热点阅读