1. 程式人生 > >ES6高頻面試題目整理

ES6高頻面試題目整理

前言

自從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 關鍵字