1. 程式人生 > >面試中常見JS開發測試題

面試中常見JS開發測試題

在前端很少有機會接觸到演算法,大多都互動性的操作,然而從各大公司面試來看,演算法依舊是考察的一方面。下面這篇文章就給大家總結了在前端JS面試中常見的測試題問題,有需要的朋友們可以參考借鑑,下面來一起看看吧。 前言 學習資料結構與演算法對於工程師去理解和分析問題都是有幫助的。如果將來當我們面對較為複雜的問題,這些基礎知識的積累可以幫助我們更好的優化解決思路。下面羅列在前端面試中經常撞見的幾個問題吧。 image.png 1、介紹js的基本資料型別

Undefined、Null、Boolean、Number、String

2、s有哪些內建物件?

資料封裝類物件:Object、Array、Boolean、Number 和 String

其他物件:Function、Arguments、Math、Date、RegExp、Error

3.this物件的理解

this總是指向函式的直接呼叫者(而非間接呼叫者);

如果有new關鍵字,this指向new出來的那個物件;

在事件中,this指向觸發這個事件的物件,特殊的是,IE中的attachEvent中的this總是指向全域性物件Window;

4.eval是做什麼的?

它的功能是把對應的字串解析成JS程式碼並執行;

應該避免使用eval,不安全,非常耗效能(2次,一次解析成js語句,一次執行)。

由JSON字串轉換為JSON物件的時候可以用eval,var obj =eval(‘(‘+ str +’)’);

5.DOM怎樣新增、移除、移動、複製、建立和查詢節點

// 建立新節點

createDocumentFragment() //建立一個DOM片段

createElement() //建立一個具體的元素

createTextNode() //建立一個文字節點

// 新增、移除、替換、插入

appendChild()

removeChild()

replaceChild()

insertBefore() //在已有的子節點前插入一個新的子節點

// 查詢

getElementsByTagName() //通過標籤名稱

getElementsByName() //通過元素的Name屬性的值(IE容錯能力較強,會得到一個數組,其中包括id等於name值的)

getElementById() //通過元素Id,唯一性

6.null和undefined的區別?

null是一個表示”無”的物件,轉為數值時為0;undefined是一個表示”無”的原始值,轉為數值時為NaN。

undefined:

(1)變數被聲明瞭,但沒有賦值時,就等於undefined。

(2) 呼叫函式時,應該提供的引數沒有提供,該引數等於undefined。

(3)物件沒有賦值的屬性,該屬性的值為undefined。

(4)函式沒有返回值時,預設返回undefined。

null:

(1) 作為函式的引數,表示該函式的引數不是物件。

(2) 作為物件原型鏈的終點。

7.new操作符具體幹了什麼呢?

(1)建立一個空物件,並且 this 變數引用該物件,同時還繼承了該函式的原型。

(2)屬性和方法被加入到 this 引用的物件中。

(3)新建立的物件由 this 所引用,並且後隱式的返回 this 。

8.JSON 的瞭解?

JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式。它是基於JavaScript的一個子集。資料格式簡單, 易於讀寫, 佔用頻寬小。

格式:採用鍵值對,例如:{‘age’:’12’, ‘name’:’back’}

9.call() 和 apply() 的區別和作用?

apply()函式有兩個引數:第一個引數是上下文,第二個引數是引數組成的陣列。如果上下文是null,則使用全域性物件代替。

如:function.apply(this,[1,2,3]);

call()的第一個引數是上下文,後續是例項傳入的引數序列。

如:function.call(this,1,2,3);

10.如何獲取UA?

function whatBrowser() {

document.Browser.Name.value=navigator.appName;

document.Browser.Version.value=navigator.appVersion;

document.Browser.Code.value=navigator.appCodeName;

document.Browser.Agent.value=navigator.userAgent;

} 本次給大家推薦一個最後給大家推薦一個免費的學習群,裡面概括移動應用網站開發,css,html,webpack,vue node angular以及面試資源等。 對web開發技術感興趣的同學,歡迎加入Q群:864305860,不管你是小白還是大牛我都歡迎,還有大牛整理的一套高效率學習路線和教程與您免費分享,同時每天更新視訊資料。 最後,祝大家早日學有所成,拿到滿意offer,快速升職加薪,走上人生巔峰。