初級前端知識點整合-ES6部分(持續更新中...)

1.var let const的區別:
·var聲明變量能夠重複聲明,let不能夠重複聲明;
·var是不受限於塊級的,let是受限於塊級的;
·能夠在var聲明的變量前面訪問,不能夠在let聲明變量以前訪問;
·var會與window相映射(掛一個屬性),而let不與window相映射;
·const聲明以後必須賦值,且不可從新賦值,不然報錯;
·const和let同樣不可重複聲明,支持塊級做用域,在聲明變量前面訪問變量會報錯,且不與window相映射。數組

2.解構賦值:
·數組解構:函數

let [a,b,c] = [1,2,3];   //a=1,b=2,c=3;
let [a,[b],c] = [1,[2,3],4]; //嵌套數組解構a=1,b=[2,3],c=4;
let [a,...b] = [1,2,3];   //數組拆分a=1,b=[2,3];
let [a,,b] = [1,2,3];    //不連續解構a=1,b=3;
let [a,b] = [1,2,3];    //不徹底解構a=1,b=2;

·對象解構:this

let {a,b} = {a:'111',b:'222'};   //a='111',b='2222'

let a;
(a = {a:'1111'});   //以聲明變量的方式解構 a='111'

let [a,b,c,d] = 'nice';  //字符串解構 a='n',b='i',c='c',d='e';

let obj = {a:'111',b:{c:'222'}};
let {a,b:{c}} = obj;   //嵌套解構a='111',c='222'

·函數參數的定義:
傳參的時候不用在乎參數順序問題,只須要參數名和值設置好便可code

function example(name,age,address){
    console.log(name + age + address);
}
example({address:"這裏",name:"名字",age:40});

·交換變量:對象

let [a,b] = [1,2];
[a,b] = [b,a];
console.log(a,b);

·函數參數設置默認值:作用域

function example({name="老王",age=40,address="這裏"}={}){
    console.log(name,age,address);
}
example();  //老王 40 這裏

3.forEach、for in、for of三者區別:
·forEach更多用來遍歷數組;
·for in通常用來遍歷數組或者對象和JSON,得到的是對象的key或數組、字符串的下標;
·for of經常使用於遍歷數組、對象,得到的是對象、數組的值;字符串

let a = [1,2,3,4];
for (let i in a){
    console.log(i);   //0,1,2,3  (數組下標)
}

for(let i of a){
    console.log(i);   //1,2,3,4  (數組元素值)
}

a.forEach((item)=>{
    console.log(item);   //1,2,3,4
});

4.箭頭函數注意的地方:
<1>用了箭頭函數,箭頭函數的this爲父做用域的this,不是調用時的thisit

let person= {
    name: "老王",
    callName:function(){  //callName爲function
        (()=>{            //function裏面包含一個當即執行的箭頭函數
            console.log(this.name);   //老王
        })();
    }
};
person.callName();

上面的例子callName爲function,他的this爲調用它的對象也就是person。而callName內部的箭頭函數this指向爲父做用域的this,因此this.name可以取得值。
咱們再來看下面的例子:io

let person= {
    name: "老王",
    callName:()=>{  //callName爲function
        (()=>{            //function裏面包含一個當即執行的箭頭函數
            console.log(this.name);   //undefined
        })();
    }
};
person.callName();

這個例子的callName爲箭頭函數,因此此時它的this指向了它的父做用域也就是window(原本指向調用它的對象)。而後callName中的箭頭函數也指向它的父做用於,也就是window,因此訪問不了person的name屬性。console

<2>箭頭函數不能做爲構造函數,不能使用new:

相關文章
相關標籤/搜索