前端面試題 ES6

2022-09-17 17:12:11 字數 3903 閱讀 1743

1.反引號(`)標識

模板字串(template string)是增強版的字串,用反引號(`)標識,它可以當作普通字串使用,也可以用來定義多行字串,或者在字串中嵌入變數

var name = "bob", time = "today";

`hello $, how are you $?` // hello bob, how are you today?

2.object.keys()方法

object.values(),object.values方法返回乙個陣列,成員是引數物件自身的(不含繼承的)所有可遍歷( enumerable )屬性的 鍵值 

var obj =;

console.log(object.entries(obj));

//得到以下資料

[ ["a", "小白"],

["b", "小黑"],

["c", "大黃"]

]

object.entries方法返回乙個陣列,成員是引數物件自身的(不含繼承的)所有可遍歷( enumerable )屬性的 鍵值對陣列

3.object.assign ()原物件的屬性和方法都合併到了目標物件

淺拷貝:複製的只是引用,原物件屬性的改變會引起拷貝物件對應引用屬性的變化。

let a =

}let b =object.assign({},a);

a.friends.student = ['tony'];

console.log(a);

// }

const object1 =;

const object2 = object.assign(, object1);

console.log(object2.c, object2.d);

console.log(object1)

//

4.for...of 迴圈

陣列原生具備iterator介面(即預設部署了symbol.iterator屬性),for...of迴圈本質上就是呼叫這個介面產生的遍歷器

const arr = ['red', 'green', 'blue'];

for(let v of arr)

const obj ={};

obj[symbol.iterator] =arr[symbol.iterator].bind(arr);

for(let v of obj)

5.promise物件

promise接受乙個**函式,**函式接收兩個引數,resolve(將promise的狀態從pending變為fulfilled,在非同步操作成功時呼叫,並將非同步操作的結果傳遞出去)、reject(將promise的狀態從pending變為rejected,在非同步操作失敗時呼叫,將非同步操作的錯誤作為引數傳遞出去)這兩個都是函式,表示成功和失敗的處理函式。then中接受的是上一次**返回的結果,所以這樣的鏈式呼叫就可以完全清晰的實現多層呼叫。

promise物件有兩個特點:

①,物件的狀態不受外界的影響,promise有三種狀態:pending(進行中)、fulfilled(已成功)、rejected(失敗),只用非同步操作的結果可以決定當前是哪一種狀態,其他任何操作都無法改變這個操作。

②.一旦狀態改變之後就不會再改變。任何時候都可以得到這個結果。狀態變化只有兩種可能:從pending到fulfilled和從pending到rejected。只要改變就已經定型了。

promise的缺點:

① 一旦建立就無法取消,一旦新建就會立即執行

② 如果不設定**函式,它的內部錯誤就不會反映到外部。

③ 當處於pending狀態時,無法判斷進展到哪一階段(剛開始還是快完成)。

let promise = new promise(function

(resolve,reject));

settimeout(

function

(),0)

promise.then(

function

())console.log("hi");

//promise hi resolved settimeout

promise是建立之後立即執行,then方法指定的指令碼在當前的所有同步任務完成之後再執行,settimeout是在下一輪「時間迴圈」開始時執行,then在本輪事件迴圈結束時執行

6.set資料結構

可用於快速去重

7.字串新增方法

8.require和require區別

require 是 amd規範引入方式 import是es6的乙個語法標準,如果要相容瀏覽器的話必須轉化成es5的語法 

呼叫時間 require是執行時呼叫,所以require理論上可以運用在**的任何地方 ;import是編譯時呼叫,所以必須放在檔案開頭 

本質 require是賦值過程,其實require的結果就是物件、數字、字串、函式等,再把require的結果賦值給某個變數 import是解構過程,但是目前所有的引擎都還沒有實現import,我們在node中使用babel支援es6,也僅僅是將es6轉碼為es5再執行,import語法會被轉碼為require

9.資料型別判斷

typeof,可以判斷資料型別,它返回表示資料型別的字串(返回結果只能包括number,boolean,string,function,object,undefined);typeof 運算子的問題是無論引用的物件是什麼型別 它都返回object

instanceof,a instanceof b 可以判斷a是不是b的例項,返回乙個布林值

console.log(arr instanceof array ); //

true console.log(date instanceof date ); //

true console.log(fn instanceof function ); //

true

//注意: instanceof 後面一定要是物件型別,大小寫不能寫錯,該方法試用一些條件選擇或分支

3.object下的tostring.call()方法來判斷

object.prototype.tostring.call();

console.log(tostring.call(123)); //

[object number]

console.log(tostring.call('123')); //

[object string]

console.log(tostring.call(undefined)); //

[object undefined]

console.log(tostring.call(true)); //

[object boolean]

console.log(tostring.call({})); //

[object object]

console.log(tostring.call()); //

[object array]

console.log(tostring.call(function(){})); //

[object function]

4.根據物件的contructor判斷

console.log('資料型別判斷' -constructor);

console.log(arr.constructor === array); //

true

console.log(date.constructor === date); //

true

console.log(fn.constructor === function); //

true

js高階面試題總結(es6)

1 模組化 通過import 來呼叫其他js檔案中export的的模組 exp1.js export default exp2.js export function fn1 export function fn2 imp.js 匯入 import exp1 from exp1.js import f...

ES6面試題總結

1 說出至少5個es6的新特性,並簡述它們的作用。簡答題 1.let關鍵字,用於宣告只在塊級作用域起作用的變數 2.const關鍵字,用於宣告乙個常量 3.結構賦值,一種新的變數賦值方式。常用於交換變數值,提取函式返回值,設定預設值 4.symbol資料型別,定義乙個獨一無二的值 5.proxy 用...

前端面試題

sprites是什麼和為什麼要使用他們?css 精靈 把一堆小的整合到一張大的上,減輕伺服器對的請求數量 有可能替代sprites的方法是什麼?svg圖示,字型圖示,字元編碼等等。1 在div排版的時候,假設現在是100px的寬,我在盒子左側用padding left留個10px的白,div就撐開了...