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暂时性死区