ES6(一)

1 字面理解ES6的三种声明方式:

  • var:它是variable的简写,可以理解成变量的意思。 全局变量
  • let:它在英文中是“让”的意思,也可以理解为一种声明的意思。 局部变量
  • const:它在英文中也是常量的意思,在ES6也是用来声明常量的,常量你可以简单理解为不变的量。

2 ① 数组的解构赋值:let [a,[b,c],d]=[1,[2,3],4];

区分 let [a,b="1"]=['2',undefined]; console.log(a+b);
let [a,b="1"]=['2',null]; console.log(a+b);

②对象的解构赋值:

let {foo,bar} = {foo:'1',bar:'2'};
console.log(foo+bar);
let foo;
{foo} ={foo:'1'};    //此行需改成才可编译成功 ({foo} ={foo:'1'});
console.log(foo); 

③字符串解构:

const [a,b,c]="qwe";
console.log(a);
console.log(b);
console.log(c);

3 对象扩展运算符(…):

①允许它传入的参数是不确定的,这时候可以使用对象扩展运算符来作参数

function q(...arg){
    console.log(arg[0]);
    console.log(arg[1]);
    console.log(arg[2]);
    console.log(arg[3]);
}
q(1,2,3);    //正确

function q(a,b,c){
    console.log(a);
    console.log(b);
    console.log(c);
    console.log(d);
}
q(1,2,3);    //error

②扩展运算符的用处:

let arr1=['www','baidu','com'];
let arr2=arr1;                 //对内存堆栈的引用,而不是真正的赋值。
console.log(arr2);
arr2.push('ab');
console.log(arr1);

控制台输出:
["www", "baidu", "com"] ["www", "baidu", "com", "ab"]

这是我们不想看到的,可以利用对象扩展运算符简单的解决这个问题。

let arr1=['www','baidu','com'];
//let arr2=arr1;
let arr2=[...arr1];
console.log(arr2);
arr2.push('ab');
console.log(arr2);
console.log(arr1);

控制台输出:

["www", "baidu", "com"] ["www", "baidu", "com", "ab"] ["www", "baidu", "com"]

Solved

4 rest运算符,用…(三个点)来表示

function q(first,...arg){
    console.log(arg.length);
}
q(0,1,2,3,4,5,6,7);//输出结果为7,arg里有7个数组元素

②循环输出rest运算符:

es5语法:

function q(first,...arg){
    for(let i=0;i<arg.length;i++){
        console.log(arg[i]);
    }
}
q(0,1,2,3,4,5,6,7);

es6语法:

function q(first,...arg){
    for(let val of arg){
        console.log(val);
    }
}
q(0,1,2,3,4,5,6,7);

ps:for…of的循环可以避免我们开拓内存空间,增加代码运行效率.

END.

posted @ 2021-01-19 14:02  Sunlightqwq  阅读(68)  评论(0)    收藏  举报