ES6中新增了哪些數(shù)據(jù)類型?
Symbol類型(基本)
Set類型(復(fù)雜)
Map類型(復(fù)雜)
WeakSet類型(復(fù)雜)
WeakMap類型(復(fù)雜)
TypedArray類型(復(fù)雜)
ES6新增了哪些特性?
const(聲明常量),let(聲明變量)關(guān)鍵詞;
map和set是數(shù)據(jù)類型;
模板字符串;
對象數(shù)組解構(gòu)賦值;
函數(shù)剩余參數(shù);(...arg)
延展運算符;(...)
函數(shù)默認參數(shù);fn(name='zs')
對象字面量的增強(屬性名和屬性值相同,可缺省);
Promise異步對象;
class類的支持;
使用let聲明變量和var聲明變量有什么區(qū)別?
使用let聲明的變量有塊級作用域,并且沒有變量的聲明提升(使用let聲明的變量在聲明之前調(diào)用會報語法錯誤);
使用var聲明的變量有聲明提升(在聲明之前調(diào)用會報undefined),并且沒有塊級作用域。
談?wù)刟sync/await的使用方式和場景
async是用來修飾函數(shù)的聲明,使用async修飾的函數(shù)會變成一個異步函數(shù)。await用來修飾函數(shù)的調(diào)用,被await修飾的函數(shù)必須返回一個promise異步對象,使用await修飾后,就會將promise異步對象轉(zhuǎn)換成一個同步操作。
箭頭函數(shù)有什么作用及應(yīng)用場景?
箭頭函數(shù)可以使用函數(shù)內(nèi)部的this指向和函數(shù)外部保持一致;箭頭函數(shù)之所以可以讓函數(shù)內(nèi)部的this指向和外部保持一致是因為箭頭函數(shù)內(nèi)部沒有this指向??梢栽赼jax的回調(diào)函數(shù)中使用箭頭函數(shù)讓回調(diào)函數(shù)中的this指向事件源;可以在定時器的第二個參數(shù)中使用箭頭函數(shù),避免函數(shù)內(nèi)部的this指向全局window。
class類如何實現(xiàn)繼承?
使用extends關(guān)鍵字實現(xiàn)繼承
class Person{
constructor(props){
this.name = props.name;
this.age = props.age;
}
}
// Student 繼承 Person
class Student extends Person{
constructor(props){
super(props);
this.score = props.score;
}
}
談?wù)剬romise的理解
Promise本身并沒有提供任何的代碼邏輯,它只是幫助我們來改造代碼結(jié)構(gòu),最顯著的一個特點就是通過Promise可以解決傳統(tǒng)的回調(diào)地獄,代碼層面Promise提供了一個構(gòu)造函數(shù),在使用的時候必須通過new創(chuàng)建一個實例對象,在創(chuàng)建實例對象的時候需要傳遞一個匿名函數(shù),這個匿名函數(shù)需要兩個參數(shù)(resolve,reject),resolve成功處理函數(shù),reject失敗處理函數(shù)。什么時候觸發(fā)成功處理函數(shù)和失敗處理函數(shù),由具體的業(yè)務(wù)邏輯來決定。resolve和reject需要通過Promise實例對象提供的then方法來傳遞。Promise提供了兩個靜態(tài)方法,all,race,all可以一次執(zhí)行多個Promise實例,返回值是數(shù)組;race也可以一次執(zhí)行多個Promise實例,哪個實例最先執(zhí)行完,就返回哪個結(jié)果。