ES6高頻面試題目整理
阿新 • • 發佈:2019-01-08
前言
自從ES6釋出以來,就受到了廣大開發者的歡迎。它的新特性解決了很多實際開發中的痛點,並且使得JavaScript逐步成為一門能夠開發大型企業應用的程式語言,基於這種技術環境下,很多公司都將ES6視為開發的其中一個標準,因此在招聘人才的時候,也會對其進行ES6知識的考察。下面就來看看哪些ES6知識是我們需要重點掌握的。
箭頭函式需要注意的地方
*當要求動態上下文的時候,就不能夠使用箭頭函式,也就是this的固定化。
1、在使用=>定義函式的時候,this的指向是定義時所在的物件,而不是使用時所在的物件;
2、不能夠用作建構函式,這就是說,不能夠使用new命令,否則就會丟擲一個錯誤;
3、不能夠使用arguments物件;
4、不能使用yield命令;
下面來看一道面試題,重點說明下第一個知識點:
class Animal {
constructor() {
this.type = "animal";
}
say(val) {
setTimeout(function () {
console.log(this); //window
console.log(this.type + " says " + val);
}, 1000)
}
}
var animal = new Animal();
animal.say("hi"); //undefined says hi
【拓展】
《JavaScript高階程式設計》第二版中,寫到:“超時呼叫的程式碼都是在全域性作用域中執行的,因此函式中this的值在非嚴格模式下指向window物件,在嚴格模式下是undefined”。也就是說在非嚴格模式下,setTimeout中所執行函式中的this,永遠指向window!!
我們再來看看箭頭函式(=>)的情況:
class Animal {
constructor() {
this.type = "animal";
}
say(val) {
setTimeout(() => {
console.log(this); //Animal
console.log(this.type + ' says ' + val);
}, 1000)
}
}
var animal = new Animal();
animal.say("hi"); //animal says hi
【特點】
不需要function關鍵字來建立函式
省略return關鍵字
繼承當前上下文的 this 關鍵字