首頁 >後端開發 >php教程 >5個經典的前端面試問題

5個經典的前端面試問題

WBOY
WBOY原創
2016-08-08 09:28:101055瀏覽

JavaScript開發人員在IT界的需求量一直很大。如果你非常精通神這門語言,你會有很多機會換工作,加薪。但是在一家公司錄用你之前,你必須順利通過面試,證明你的技能。在本文中,我將向您展示5個關於前端相關的問題,以測試侯選者的JavaScript技能和他們解決問題的能力。有將會非常有趣!

問題1Scope作用範圍

var a = b = 5;

})();

console.log(b);

什麼會印在控制台上?

回答

上面的程式碼會印上

5

這個問題的訣竅是,這裡有兩個變數聲明,但 a 使用關鍵字

var

聲明的。代表它是一個函數的局部變數。與此相反,b 變成了全域變數。 這個問題的另一個訣竅是,它沒有使用嚴格模式 ('use strict';) 。如果啟用了嚴格模式,程式碼就會引發

ReferenceError

的錯誤:B沒有定義(b is not defined)。請記住,嚴格模式,則需要明確指定,才能實現全域變數聲明。例如,你應該要寫: (function() {   'use strict';

console.log(b);

問題

2:建立「原生」(

功能。當傳入一個整數n

時,它會傳回重複n

次字串的結果。例如:console.log('hello'.repeatify(3));應列印 hellohellohello

回答一個可能的實作如下所示:String.prototype.repeatify = String.prototype.repeatify ||

   for (var i = 0; i       str += this;

; };

現在的問題測試開發者有關

JavaScript

繼承和

prototype

的知識點。這也驗證了開發者是否知道該如果擴展內建物件(儘管這不應該做的)。

這裡的另一個重點是,你要知道如何不覆蓋可能已經定義的功能。測試一下這個功能定義之前並不存在:

String.prototype.repeatify = String.prototype.repeatify || function(times) {/* code here */};

當你被要求做好

JavaScript

函數相容時這種技術特別有用。

問題

3

:聲明提升(

Hoisting

執行這段程式碼,輸出什麼結果。

function test() {

   console.log(a);

   console.log(foo(oo()(

   function foo() {

      return 2;

   }

}

test;

這段程式碼的結果是 undefined

2

原因是,變數和函數的宣告都提前了(移到了函數的頂端),但變數不分配任何值。因此,在列印變數的時候,它在函數中存在(它被聲明了),但它仍然是 undefined

。表示換句話說,上面的程式碼等同於下列內容:function test() {   var a;

   }

   console.log(a);

   console.log(foo());

   console.log(foo());

}

test ();

問題4

this

JavaScriptScript

中如何運作的給出你的答案。

var fullname = 'John Doe';

var obj = {

        fullname: 'Aurelio De Rosa',

      getFullname: function() {           }};

console.log(obj.prop .getFullname());

var test = obj.prop.getFullname;

答案是

Aurelio De Rosa

John Doe。原因是,在一個函數中,

this的行為,取決於

JavaScript函數的呼叫方式和定義方式,而不僅僅是看它如何被定義的。

在第一個

console.log()呼叫中,

getFullname() 被呼叫作為

obj.propp.prop所以,上下文指的是後者,函數傳回該物件的fullname

。與此相反,當getFullname()

被分配到test

變數時,上下文指的是全域物件(window

)。這是因為test

是被隱式設定為全域物件的屬性。基於這個原因,函數傳回window

fullname

,即定義在第一行的那個值。 問題5call() apply()

現在讓你解決前一個問題,使最後的console.log() 打印 Aurelio De Rosa

回答

該問題可以通過強制使用 call() 或者 apply() 改變函數上下文。在下面我將使用call(),但在這種情況下,apply()會輸出相同的結果:

console.log(test.call(obj.pro)) ;

結論

在這篇文章中,我們已經討論了用來測試JavaScript開發者的五個經典問題。面試的概念和涵蓋的主題通常是非常相似的。如果你不知道的一些問題的答案,不必擔心:學習和經驗可以慢慢累積。

如果你有其他一些有趣的問題,不要猶豫,與我們分享。它會幫助很多開發者。

免費領取LAMP兄弟連原創PHP 細說PHP》精要版,詳情請洽官網客服:http://www.lampbrother.netPHPCMS二次開發

http://yun.ixdl.5? u=5

微信開發http://yun.itxdl.cn/online/weixin/index.php?u=5

http://yun.itxdl.cn/online/server/index.php?u=5Javascript課程

http://yun.itxdl.online index.php?u=5CTO

訓練營

http://yun.itxdl.cn/online/cto/index.php?u=5http://yun.itxdl.cn/online/cto/index.php?u=5=5

以上就介紹了5個經典的前端面試問題,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn