块级作用域
- 块级作用域的重要性
// 循环结束后 i成为全局变量
for(var i = 0; i< 6; i++){}
console.log(i) // 6
for(let i = 0; i< 6; i++){}
console.log(i) // 报错 i is not defined
var arr = [];
for(var i = 0; i< 6; i++){
arr[i] = function(){
console.log(i)
}
}
arr[3](); // 6
var arr = [];
for(let i = 0; i< 6; i++){
arr[i] = function(){
console.log(i)
}
}
arr[3](); // 3
<!--每次循环对应的i都在一个新的作用域中,相当于每次都会重新定义let i = xxx,所以不会被污染-->
数组结构
- es6新特性,比ES5代码简洁,清晰 减少代码量
let [a,b,c] = [1,2,3];//a=1,b=2,c=3
//匹配模式 左边是变量 = (匹配)右边对应的值
<!--let [x,y] = [10,20]; 相当于 var x = 10;var y = 20;-->
let [x,y,z] = [1,2] // x=1,y=2,z=undefined
let [x,y,z] = [1,[2,3],4] //数组
let [x,y,z] = [1,{'name':'adc'},4] //对象
- 默认值
let arr = [10,20];
let [x=1,y=2] = arr;
// 相当于
x = arr[0] || 1;
y = arr[1] || 2;
//例外情况 成员等于undefined 默认值生效
let [x = 1] = [undefined];
函数
function fn(){
return '12345';
}
let [x = fn()] = [1] // x = 1
let [x = fn()] = [] // x = '12345'
let [x = fn()] = [undefined] // x = '12345'