es6

1.let 和 const 命令

(1)let 和 var 不同,var 的作用域是全局的,而let 的作用域是局部的,只在她当前的块内有效。

{
let a= 2;
var b = 5;
}
console.log(b); //5
console.log(a); //报错! a只在它的块内有效

(2)let 写for循环,相当好用

var sum = 0;
for(let i = 0;i<100;i++){
sum += i;
}
console.log(sum); //4950

(3)var 和 let写循环的对比
var arr = [];
for(var m = 0;m<10;m++){
arr[m] = function(){
console.log(m);
}
}
arr[6]();//10 var 是全局的,所以i全局有效,每次累加都改变,所以最后是10

for(let n =0;n<10;n++){
arr[n]=function(){
console.log(n);
}
}
arr[6]();//6 let是局部的,只在for这个块里有效


(4)for循环语句和循环体的作用域区别
for(let w = 0; w<10;w++){
let w = "abc";
console.log(w); //输出10次abc,说明for循环语句内的w和循环体内的w是不同作用域的
//for循环语句内的w是父集作用域,循环体内的是子集作用域
}


2不存在变量提升
console.log(a);  //undefined
var a = 100;
console.log(b); //报错!!let声明的变量必须在声明后才能使用
let b = 10;


3暂时性死区

 
 
原文地址:https://www.cnblogs.com/lichunjing/p/6673982.html