《深入理解ES6》笔记(1)
var 声明的变量会提升到作用域顶部。变量初始值为undefined。
let声明只能在块内访问,且禁止重声明。通常将let声明语句放在封闭代码块的顶部,以便整个代码块都可以访问。
//1 let a=33; a=34;//此时报错,let禁止重声明 //2 function getName(){//只有此函数内部可以访问b值 let b=233; ..... }
const声明的是常量,值一旦被设定后不能更改。const声明的常量只能在当前代码块内有效,一旦执行到块外后立即被销毁。同样禁止重声明。const声明不允许修改绑定,但是允许修改值。
//1 const a=33; //此处报错,const禁止重声明 a=34; //2 const person={ name:'jiaxiaonuo' }; //正常执行 person.name='robin'; //报错 person={ name:'nuonuo'; };
let可以应用于for循环。const不建议应用在for循环。
for(let i=0;i<10;i++){ console.log(i); };
let和const可以在for-in、for-of循环中使用。
var arr=[], fruits={ apple:true, orange:true, banana:true }; for(let key in fruits){ arr.push(function(){ console.log(key); }); } arr.forEach(function(func){ func(); });
var arr=[], fruits={ apple:true, orange:true, banana:true }; for(const key in fruits){ arr.push(function(){ console.log(key); }); } arr.forEach(function(func){ func(); });
var会覆盖一个已经存在的全局变量,而let和const不能覆盖全局变量,知识遮蔽它。
var RegExp='this is me'; console.log(window.RegExp); //this is me let RegExp='haha'; console.log(RegExp); //haha console.log(RegExp===window.RegExp); //false const ncz='lili'; console.log(ncz); //lili console.log(ncz===window.ncz); //false