ES6筆試面試題總結

收集整理的一些ES6的筆試面試題,出處在最底部標明html

把如下代碼使用兩種方法,來依次輸出0到9?

var funcs = []
 for (var i = 0; i < 10; i++) {
    funcs.push(function() { console.log(i) })
 }
 funcs.forEach(function(func) {
    func()
 });
  • 利用ES5 閉包解決這個問題jquery

    var funcs = []
    for (var i = 0; i < 10; i++) {
       func.push((function(value) {
           return function() {
               console.log(value)
           }
       }(i)))
    }
  • ES6 let面試

    for (let i = 0; i < 10; i++) {
       func.push(function() {
           console.log(i)
       })
    }

ES6的模板字符串有哪些新特性?

  • 基本的字符串格式化。將表達式嵌入字符串中進行拼接。用${}來界定
  • 在ES5時咱們經過反斜槓()來作多行字符串或者字符串一行行拼接。ES6反引號(``)直接搞定。

箭頭有哪些新特色?

  • 不須要function關鍵字來建立函數
  • 省略return關鍵字
  • 繼承當前上下文的 this 關鍵字

如下代碼依次輸出內容是?

setTimeout(function() {
  console.log(1)
}, 0);
new Promise(function executor(resolve) {
  console.log(2);
  for( var i=0 ; i<10000 ; i++ ) {
    i == 9999 && resolve();
  }
  console.log(3);
}).then(function() {
  console.log(4);
});
console.log(5);

首先先碰到一個 setTimeout,因而會先設置一個定時,在定時結束後將傳遞這個函數放到任務隊列裏面,所以開始確定不會輸出 1 。 而後是一個 Promise,裏面的函數是直接執行的,所以應該直接輸出 2 3 。 而後,Promise 的 then 應當會放到當前 tick 的最後,可是仍是在當前 tick 中。 所以,應當先輸出 5,而後再輸出 4 。 最後在到下一個 tick,就是 1 。 「2 3 5 4 1」ajax

promise的原理?jquery的ajax返回的是promise對象嗎?

promise 只有2個狀態,成功和失敗,怎麼讓一個函數不管成功和失敗都能被調用? Promise.all() 是幹什麼用的,怎麼用?

promise.all()的使用:
Promise.all方法用於將多個Promise實例,包裝成一個新的Promise實例。
Promise.all方法接受一個數組做爲參數,數組裏的元素都是Promise對象的實例,若是不是,就會先調用下面講到的Promise.resolve方法,將參數轉爲Promise實例,再進一步處理。(Promise.all方法的參數能夠不是數組,但必須具備Iterator接口,且返回的每一個成員都是Promise實例。)數組

var p =Promise.all([p1,p2,p3]);

p的狀態由p一、p二、p3決定,分爲兩種狀況。promise

當該數組裏的全部Promise實例都進入Fulfilled狀態,Promise.all**返回的實例纔會變成Fulfilled狀態。並將Promise實例數組的全部返回值組成一個數組,傳遞給Promise.all返回實例的回調函數**。
當該數組裏的某個Promise實例都進入Rejected狀態,Promise.all返回的實例會當即變成Rejected狀態。並將第一個rejected的實例返回值傳遞給Promise.all返回實例的回調函數。

參考

http://www.bslxx.com/a/miansh...閉包

相關文章
相關標籤/搜索