更新時(shí)間:2023-01-14 14:59:10 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1685次
1、es5和es6的區(qū)別,說(shuō)一下你所知道的es6
ECMAScript5,即ES5,是ECMAScript的第五次修訂,于2009年完成標(biāo)準(zhǔn)化ECMAScript6,即ES6,是ECMAScript的第六次修訂,于2015年完成,也稱ES2015ES6是繼ES5之后的一次改進(jìn),相對(duì)于ES5更加簡(jiǎn)潔,提高了開(kāi)發(fā)效率ES6新增的一些特性:
1)let聲明變量和const聲明常量,兩個(gè)都有塊級(jí)作用域ES5中是沒(méi)有塊級(jí)作用域的,并且var有變量提升,在let中,使用的變量一定要進(jìn)行聲明
2)箭頭函數(shù)ES6中的函數(shù)定義不再使用關(guān)鍵字function(),而是利用了()=>來(lái)進(jìn)行定義
3)模板字符串模板字符串是增強(qiáng)版的字符串,用反引號(hào)(`)標(biāo)識(shí),可以當(dāng)作普通字符串使用,也可以用來(lái)定義多行字符串
4)解構(gòu)賦值ES6 允許按照一定模式,從數(shù)組和對(duì)象中提取值,對(duì)變量進(jìn)行賦值
5)for of循環(huán)for...of循環(huán)可以遍歷數(shù)組、Set和Map結(jié)構(gòu)、某些類似數(shù)組的對(duì)象、對(duì)象,以及字符串
6)import、export導(dǎo)入導(dǎo)出ES6標(biāo)準(zhǔn)中,Js原生支持模塊(module)。將JS代碼分割成不同功能的小塊進(jìn)行模塊化,將不同功能的代碼分別寫(xiě)在不同文件中,各模塊只需導(dǎo)出公共接口部分,然后通過(guò)模塊的導(dǎo)入的方式可以在其他地方使用
7)set數(shù)據(jù)結(jié)構(gòu)Set數(shù)據(jù)結(jié)構(gòu),類似數(shù)組。所有的數(shù)據(jù)都是唯一的,沒(méi)有重復(fù)的值。它本身是一個(gè)構(gòu)造函數(shù)
8)... 展開(kāi)運(yùn)算符可以將數(shù)組或?qū)ο罄锩娴闹嫡归_(kāi);還可以將多個(gè)值收集為一個(gè)變量
9)修飾器 @decorator是一個(gè)函數(shù),用來(lái)修改類甚至于是方法的行為。修飾器本質(zhì)就是編譯時(shí)執(zhí)行的函數(shù)
10)class 類的繼承ES6中不再像ES5一樣使用原型鏈實(shí)現(xiàn)繼承,而是引入Class這個(gè)概念11)async、await使用 async/await, 搭配promise,可以通過(guò)編寫(xiě)形似同步的代碼來(lái)處理異步流程, 提高代碼的簡(jiǎn)潔性和可讀性async 用于申明一個(gè) function 是異步的,而 await 用于等待一個(gè)異步方法執(zhí)行完成
12)promisePromise是異步編程的一種解決方案,比傳統(tǒng)的解決方案(回調(diào)函數(shù)和事件)更合理、強(qiáng)大
13)SymbolSymbol是一種基本類型。Symbol 通過(guò)調(diào)用symbol函數(shù)產(chǎn)生,它接收一個(gè)可選的名字參數(shù),該函數(shù)返回的symbol是唯一的
14)Proxy代理使用代理(Proxy)監(jiān)聽(tīng)對(duì)象的操作,然后可以做一些相應(yīng)事情
2、var、let、const之間的區(qū)別
var聲明變量可以重復(fù)聲明,而let不可以重復(fù)聲明
var是不受限于塊級(jí)的,而let是受限于塊級(jí)
var會(huì)與window相映射(會(huì)掛一個(gè)屬性),而let不與window相映射
var可以在聲明的上面訪問(wèn)變量,而let有暫存死區(qū),在聲明的上面訪問(wèn)變量會(huì)報(bào)錯(cuò)
const聲明之后必須賦值,否則會(huì)報(bào)錯(cuò)
const定義不可變的量,改變了就會(huì)報(bào)錯(cuò)
const和let一樣不會(huì)與window相映射、支持塊級(jí)作用域、在聲明的上面訪問(wèn)變量會(huì)報(bào)錯(cuò)
3、使用箭頭函數(shù)應(yīng)注意什么?
(1)用了箭頭函數(shù),this就不是指向window,而是父級(jí)(指向是可變的)
(2)不能夠使用arguments對(duì)象
(3)不能用作構(gòu)造函數(shù),這就是說(shuō)不能夠使用new命令,否則會(huì)拋出一個(gè)錯(cuò)誤
(4)不可以使用yield命令,因此箭頭函數(shù)不能用作 Generator 函數(shù)
4、ES6的模板字符串有哪些新特性?并實(shí)現(xiàn)一個(gè)類模板字符串的功能
基本的字符串格式化。
將表達(dá)式嵌入字符串中進(jìn)行拼接。
用${}來(lái)界定在ES5時(shí)我們通過(guò)反斜杠()來(lái)做多行字符串或者字符串一行行拼接。
ES6反引號(hào)(``)就能解決類模板字符串的功能
let name = 'web';
let age = 10;
let str = '你好,${name} 已經(jīng) ${age}歲了'
str = str.replace(/\$\{([^}]*)\}/g,function(){
return eval(arguments[1]);
})
console.log(str);//你好,web 已經(jīng) 10歲了
5、介紹下 Set、Map的區(qū)別?
應(yīng)用場(chǎng)景Set用于數(shù)據(jù)重組,Map用于數(shù)據(jù)儲(chǔ)存Set:
(1)成員不能重復(fù)
(2)只有鍵值沒(méi)有鍵名,類似數(shù)組
(3)可以遍歷,方法有add, delete,has
Map:
(1)本質(zhì)上是健值對(duì)的集合,類似集合
(2)可以遍歷,可以跟各種數(shù)據(jù)格式轉(zhuǎn)換
6、ECMAScript 6 怎么寫(xiě) class ,為何會(huì)出現(xiàn) class?
相關(guān)閱讀
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)