es6学习笔记(2):块级作用域 ,数组结构

146 阅读1分钟

块级作用域

  1. 块级作用域的重要性
// 循环结束后 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'