es6知識點1 2021-03-21

1.箭頭函數(shù)有哪些特性
1、箭頭函數(shù)是匿名函數(shù),不綁定自己的this,arguments,super,new.target

2、箭頭函數(shù)會捕獲其所在上下文的this值,作為自己的this值,在使用call/apply綁定時,相當(dāng)于只是傳入了參數(shù),對this沒有影響

3、箭頭函數(shù)不綁定arguments,取而代之用rest參數(shù)…解決

4、箭頭函數(shù)當(dāng)方法使用的時候,沒有定義this綁定

5、箭頭函數(shù)不能作為構(gòu)造函數(shù),和 new 一起用就會拋出錯誤

6、箭頭函數(shù)沒有原型屬性

7、不能簡單返回對象字面量

2.實現(xiàn)數(shù)組過濾重復(fù)

  Let s = [...new Set(arr)]

3.使用json方式實現(xiàn)深拷貝

let arr2 = JSON.parse(JSON.stringify(arr1));

4.ES6模板字符串有哪些好處
a. 在ES5拼接的時候,如果結(jié)構(gòu)需要換行,必須使用轉(zhuǎn)義符;在ES6中,使用模板字符串,直接使用html結(jié)構(gòu)即可

b. 在ES5中,單引號和雙引號必須注意嵌套問題,在ES6中,就不需要考慮;

c. 模板字符串中,可以寫js語句

d. 方便簡潔,不容易出錯;

5.關(guān)于對象擴展的屬性簡寫和屬性名表達(dá)方式寫法,請各舉一個例子

  1. 屬性的簡寫:必須屬性名和變量名相同

  2. 屬性表達(dá)式:[]里面可以是變量,字符串,數(shù)字,表達(dá)式

注意:如果對象的屬性是數(shù)字,不可以使用點進(jìn)行訪問

屬性名簡寫:

var title = 'offc';

var size = 10;

var obj = {

title,

size,

};

屬性名表達(dá)式:

var title = 'offc';

obj[title] = '簡書';

6.手寫promise

var p = new Promise((resolve,reject)={

if(1){

resolve(‘成功’)

}

else{

reject(‘失敗’);

}

})

p.then((res)=>{}).catch((err)=>{})

7.用class定義一個類

class Aniaml{

static Type = ‘動物’

constructor(newName){

this.name = newName

}

eat(){conosle.log(‘吃東西’)}

static sayHi(){

console.log(‘大家好’)

}

}

8.class實現(xiàn)繼承

class Tigger extends Animal{

constructor(props){

super(props)

}

}

9.談一下對async。。。。await的理解
async...await是基于promise的generator語法糖,它用來等待promise的執(zhí)行結(jié)果,常規(guī)函數(shù)使用await沒有效果;async修飾的函數(shù)內(nèi)部return不會得到預(yù)期的結(jié)果,會得到一個promise對象;await等待的promise結(jié)果是resolve狀態(tài)的內(nèi)容,reject狀態(tài)的內(nèi)容需要使用try...catch獲取,await關(guān)鍵字必須要出現(xiàn)在async修飾的函數(shù)中,否則報錯。

10.ES6中的symbol類型有什么作用
ES6新增了Symbol數(shù)據(jù)類型,它用來生成一個獨一無二的值,它Symbol數(shù)據(jù)常用來給對象屬性賦值,讓對象屬性具備唯一性,不容易被覆蓋。

11.class類中的super有哪些用法

Super在類中有兩種用法,一個是super方法,一個是super對象;super方法只能出現(xiàn)在constructor方法中,super對象一般出現(xiàn)在子類覆蓋父類的方法中。

12.靜態(tài)和成員的區(qū)別
靜態(tài)的變量或方法歸類所有,全局獨一份,成員的變量或方法歸對象所有,每次實例化對象成員方法和成員變量就會得到一份拷貝;對于一些通用性的屬性或方法,可以考慮設(shè)置為靜態(tài)。

13.談一體你多promise的理解
Promise用來解決異步回調(diào)問題,由于js是單線程的,很多異步操作都是依靠回調(diào)方法實現(xiàn)的,這種做法在邏輯比較復(fù)雜的回調(diào)嵌套中會相當(dāng)復(fù)雜;也叫做回調(diào)地獄;promise用來將這種繁雜的做法簡化,讓程序更具備可讀性,可維護性;promise內(nèi)部有三種狀態(tài),pedding,fulfilled,rejected;pedding表示程序正在執(zhí)行但未得到結(jié)果,即異步操作沒有執(zhí)行完畢,fulfilled表示程序執(zhí)行完畢,且執(zhí)行成功,rejected表示執(zhí)行完畢但失敗;這里的成功和失敗都是邏輯意義上的;并非是要報錯。其實,promise和回調(diào)函數(shù)一樣,都是要解決數(shù)據(jù)的傳遞和消息發(fā)送問題,promise中的then一般對應(yīng)成功后的數(shù)據(jù)處理,catch一般對應(yīng)失敗后的數(shù)據(jù)處理。Promise狀態(tài)一旦確定,就不會再次發(fā)生改變

14.深拷貝的原理
Js的深拷貝發(fā)生在對象的賦值上,對象賦值的時候僅僅是一個引用賦值,也就是說兩個不同變量名指向的是同一份內(nèi)存空間;基本數(shù)據(jù)類型則不存在這樣的行為;要完成對象的深拷貝需要使用遞歸遍歷所有對象的屬性進(jìn)行賦值,也可以使用JSON.stringfy和JSON.parse操作。

15.set和map的區(qū)別
Set是一種類似數(shù)組的集合類型,它與數(shù)組不同的是,不允許存在重復(fù)數(shù)據(jù);常用操作方法有:add,delete,has,clear等;遍歷使用forEach;

Map是一種類似對象的集合類型,它與對象不同的是,key可以接受對象類型,常用的操作方法有:set,get,has,delete等;遍歷使用forEach

16.node的特點是什么
1)它是一個Javascript運行環(huán)境

2)依賴于Chrome V8引擎進(jìn)行代碼解釋

3)事件驅(qū)動

4)非阻塞I/O

5)輕量、可伸縮,適于實時數(shù)據(jù)交互應(yīng)用

6)單進(jìn)程,單線程

17.module.exports和exports的區(qū)別,請用代碼示范
Exports和module.exports的區(qū)別:

1)exports相當(dāng)于在js文件的首行寫了let exports = module.exports;(但是實際情況不需要寫,否則報錯)

2)exports不可以直接賦值,如果直接賦值相當(dāng)于與module.exports切斷了聯(lián)系,沒有了導(dǎo)出功能;

3)如果exports和module.exports同時導(dǎo)出,exports就失去了導(dǎo)出的功能;

4)注意點:module.exports只使用一次即可,多個變量輸出的時候,可以使用對象的形式

18.MIME類型有什么作用

MIME的全稱是Multipurpose Internet Mail Extensions,即多用途互聯(lián)網(wǎng)郵件擴展類型。這是HTTP協(xié)議中用來定義文檔性質(zhì)及格式的標(biāo)準(zhǔn)。服務(wù)器通過MIME告知響應(yīng)內(nèi)容類型,而瀏覽器則通過MIME類型來確定如何處理文檔。

常見MIME類型:

application/octet-stream?未知的應(yīng)用程序文件

application/json?json數(shù)據(jù)

text/plain未知的文本文件(純文本文件),瀏覽器會認(rèn)為這是可以直接顯示的

注:?瀏覽器分辨文件是基于MIME的,而不會把文件打開查看是否是其他類型,例如用link鏈接了一個標(biāo)記為text/plain的文件,就算此文件是css文件,就算其后綴是.css,瀏覽器依舊不認(rèn)

text/css?css文件

text/html?HTML文件

image/gif?gif文件

常見的還有image/jpeg、image/png、image/svg

很多瀏覽器支持icon image/x-icon

let和var的區(qū)別
1)let是塊作用域,var是函數(shù)作用域

2)let沒有變量聲明提升,var有聲明提升

3)存在暫時性死區(qū)(TDZ),暫時性死區(qū)所指的問題基本都是 先聲明后使用的問題

4)在let聲明變量所在的作用域,不能重復(fù)聲明同名變量

20.iterator的作用是什么,怎么布置iterator接口。
1、統(tǒng)一數(shù)據(jù)結(jié)構(gòu)(數(shù)組,對象,map,set,數(shù)組包對象,對象包數(shù)組)的遍歷方式

2、在數(shù)據(jù)結(jié)構(gòu)上部署iterator接口:所謂的部署接口表現(xiàn)形式為,給對象或數(shù)組等集合增加iterator屬性,屬性的內(nèi)容是一個根據(jù)iterator接口規(guī)范自行實現(xiàn)的方法

21cookie和session的區(qū)別
session是區(qū)別于數(shù)據(jù)庫存在的一種服務(wù)器臨時存儲技術(shù), 它主要存儲一些無需持久化的數(shù)據(jù), 比如臨時的登錄狀態(tài)信息等

cookie是存在于瀏覽器上的一種瀏覽器本地存儲的方式, 同域名下的cookie不同標(biāo)簽頁可以共享, 默認(rèn)過期時間是瀏覽器關(guān)閉時, 而且在進(jìn)行http請求時, 會自動帶上瀏覽器全部的cookie發(fā)給后臺, 后臺也可以獲取cookie, 設(shè)置可以在響應(yīng)時, 想瀏覽器中設(shè)置cookie。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、問:ES6是什么,為什么要學(xué)習(xí)它,不學(xué)習(xí)ES6會怎么樣? 答: ES6是新一代的JS語言標(biāo)準(zhǔn),對分JS語言核心...
    猴逃逃閱讀 306評論 0 0
  • 變量提升 JavaScript代碼在執(zhí)行時會經(jīng)歷3個主要的步驟(比起那些編譯過程只有三個步驟的語言的編譯器,Jav...
    solfKwolf閱讀 204評論 0 0
  • 1.箭頭函數(shù)有哪些特性 1、箭頭函數(shù)是匿名函數(shù),不綁定自己的this,arguments,super,new.ta...
    86a78f5f2e49閱讀 17,549評論 0 11
  • 1.for循環(huán)括號內(nèi)作用域與循環(huán)體作用域不同 2.let const聲明的變量有暫時性死區(qū) 3.塊級作用域必須有大...
    如沐春風(fēng)ei閱讀 680評論 0 2
  • 前言 國慶假期已過一半,來篇干貨壓壓驚。 ES6,并不是一個新鮮的東西,ES7、ES8已經(jīng)趕腳了。但是,東西不在于...
    Layzimo閱讀 1,172評論 0 7

友情鏈接更多精彩內(nèi)容