更新時間:2023-01-14 14:59:10 來源:動力節點 瀏覽1221次
1、es5和es6的區別,說一下你所知道的es6
ECMAScript5,即ES5,是ECMAScript的第五次修訂,于2009年完成標準化ECMAScript6,即ES6,是ECMAScript的第六次修訂,于2015年完成,也稱ES2015ES6是繼ES5之后的一次改進,相對于ES5更加簡潔,提高了開發效率ES6新增的一些特性:
1)let聲明變量和const聲明常量,兩個都有塊級作用域ES5中是沒有塊級作用域的,并且var有變量提升,在let中,使用的變量一定要進行聲明
2)箭頭函數ES6中的函數定義不再使用關鍵字function(),而是利用了()=>來進行定義
3)模板字符串模板字符串是增強版的字符串,用反引號(`)標識,可以當作普通字符串使用,也可以用來定義多行字符串
4)解構賦值ES6 允許按照一定模式,從數組和對象中提取值,對變量進行賦值
5)for of循環for...of循環可以遍歷數組、Set和Map結構、某些類似數組的對象、對象,以及字符串
6)import、export導入導出ES6標準中,Js原生支持模塊(module)。將JS代碼分割成不同功能的小塊進行模塊化,將不同功能的代碼分別寫在不同文件中,各模塊只需導出公共接口部分,然后通過模塊的導入的方式可以在其他地方使用
7)set數據結構Set數據結構,類似數組。所有的數據都是唯一的,沒有重復的值。它本身是一個構造函數
8)... 展開運算符可以將數組或對象里面的值展開;還可以將多個值收集為一個變量
9)修飾器 @decorator是一個函數,用來修改類甚至于是方法的行為。修飾器本質就是編譯時執行的函數
10)class 類的繼承ES6中不再像ES5一樣使用原型鏈實現繼承,而是引入Class這個概念11)async、await使用 async/await, 搭配promise,可以通過編寫形似同步的代碼來處理異步流程, 提高代碼的簡潔性和可讀性async 用于申明一個 function 是異步的,而 await 用于等待一個異步方法執行完成
12)promisePromise是異步編程的一種解決方案,比傳統的解決方案(回調函數和事件)更合理、強大
13)SymbolSymbol是一種基本類型。Symbol 通過調用symbol函數產生,它接收一個可選的名字參數,該函數返回的symbol是唯一的
14)Proxy代理使用代理(Proxy)監聽對象的操作,然后可以做一些相應事情
2、var、let、const之間的區別
var聲明變量可以重復聲明,而let不可以重復聲明
var是不受限于塊級的,而let是受限于塊級
var會與window相映射(會掛一個屬性),而let不與window相映射
var可以在聲明的上面訪問變量,而let有暫存死區,在聲明的上面訪問變量會報錯
const聲明之后必須賦值,否則會報錯
const定義不可變的量,改變了就會報錯
const和let一樣不會與window相映射、支持塊級作用域、在聲明的上面訪問變量會報錯
3、使用箭頭函數應注意什么?
(1)用了箭頭函數,this就不是指向window,而是父級(指向是可變的)
(2)不能夠使用arguments對象
(3)不能用作構造函數,這就是說不能夠使用new命令,否則會拋出一個錯誤
(4)不可以使用yield命令,因此箭頭函數不能用作 Generator 函數
4、ES6的模板字符串有哪些新特性?并實現一個類模板字符串的功能
基本的字符串格式化。
將表達式嵌入字符串中進行拼接。
用${}來界定在ES5時我們通過反斜杠()來做多行字符串或者字符串一行行拼接。
ES6反引號(``)就能解決類模板字符串的功能
let name = 'web';
let age = 10;
let str = '你好,${name} 已經 ${age}歲了'
str = str.replace(/\$\{([^}]*)\}/g,function(){
return eval(arguments[1]);
})
console.log(str);//你好,web 已經 10歲了
5、介紹下 Set、Map的區別?
應用場景Set用于數據重組,Map用于數據儲存Set:
(1)成員不能重復
(2)只有鍵值沒有鍵名,類似數組
(3)可以遍歷,方法有add, delete,has
Map:
(1)本質上是健值對的集合,類似集合
(2)可以遍歷,可以跟各種數據格式轉換
6、ECMAScript 6 怎么寫 class ,為何會出現 class?
ES6的class可以看作是一個語法糖,它的絕大部分功能ES5都可以做到,新的class寫法只是讓對象原型的寫法更加清晰、更像面向對象編程的語法
//定義類
class Point {
constructor(x,y) {
//構造方法
this.x = x; //this關鍵字代表實例對象
this.y = y;
} toString() {
return '(' + this.x + ',' + this.y + ')';
}
}
7、Promise構造函數是同步執行還是異步執行,那么 then 方法呢?
promise構造函數是同步執行的,then方法是異步執行的
8、setTimeout、Promise、Async/Await 的區別
事件循環中分為宏任務隊列和微任務隊列
其中setTimeout的回調函數放到宏任務隊列里,等到執行棧清空以后執行promise.then里的回調函數會放到相應宏任務的微任務隊列里,等宏任務里面的同步代碼執行完再執行async函數表示函數里面可能會有異步方法,await后面跟一個表達式
async方法執行時,遇到await會立即執行表達式,然后把表達式后面的代碼放到微任務隊列里,讓出執行棧讓同步代碼先執行
9、promise有幾種狀態,什么時候會進入catch?
三個狀態:
pending、fulfilled、reject
兩個過程:
padding -> fulfilled、padding -> rejected當pending為rejectd時,會進入catch
以上就是動力節點小編介紹的"想成為開發程序員,這套es6面試題要掌握",希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為您務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習