這篇文章主要講解了“JavaScript有哪些面試題”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“JavaScript有哪些面試題”吧!
從策劃到設(shè)計(jì)制作,每一步都追求做到細(xì)膩,制作可持續(xù)發(fā)展的企業(yè)網(wǎng)站。為客戶提供做網(wǎng)站、成都做網(wǎng)站、網(wǎng)站策劃、網(wǎng)頁設(shè)計(jì)、域名注冊、網(wǎng)絡(luò)空間、網(wǎng)絡(luò)營銷、VI設(shè)計(jì)、 網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,以客戶的口碑塑造優(yōu)易品牌,攜手廣大客戶,共同發(fā)展進(jìn)步。
1.創(chuàng)建JavaScript對象的兩種方法是什么?
這是一個(gè)非常簡單的問題,如果你用過JavaScript的話。你至少得知道一種方法。但是,盡管如此,根據(jù)我的經(jīng)驗(yàn),也有很多自稱是JavaScript程序員的人說不知道如何回答這個(gè)問題。
使用“new”關(guān)鍵字來調(diào)用函數(shù)。
open/close花括號(hào)。
var o = {};
你也可以繼續(xù)提問,“使用new關(guān)鍵字,什么情況下創(chuàng)建對象?”但是,由于我只是想淘汰一些人,所以這些問題我會(huì)等到真正面試的時(shí)候去問。
2.如何創(chuàng)建數(shù)組?
這和“如何創(chuàng)建對象”是相同級(jí)別的問題。然而,也有一些人回答得了***個(gè)問題,卻不能回答這個(gè)問題。
用下面的代碼,簡簡單單就能創(chuàng)建一個(gè)數(shù)組:
var myArray = new Array();
創(chuàng)建數(shù)組是一個(gè)很復(fù)雜的過程。但是我希望能從應(yīng)聘者口中聽到使用方括號(hào)的答案。
var myArray = [];
當(dāng)然,我們還可以繼續(xù)問其他問題,比如如何高效地刪除JavaScript數(shù)組中的重復(fù)元素等,但是由于我們只需要知道應(yīng)聘人員是否值得進(jìn)一步的觀察,關(guān)于數(shù)組的問題我會(huì)到此結(jié)束。
3.什么是變量提升(Variable Hoisting)?
這個(gè)問題稍微難一點(diǎn),我也并不要求對方一定得回答出來。但是,通過這個(gè)問題能夠快速確定應(yīng)聘者的技術(shù)水平:他們是否真的像他們聲明得那樣理解這門編程語言?
變量提升指的是,無論是哪里的變量在一個(gè)范圍內(nèi)聲明的,那么JavaScript引擎會(huì)將這個(gè)聲明移到范圍的頂部。如果在函數(shù)中間聲明一個(gè)變量,例如在某一行中賦值一個(gè)變量:
function foo()
{
// 此處省略若干代碼
var a = "abc";
}
實(shí)際上會(huì)這樣運(yùn)行代碼:
function foo()
{
var a;
// 此處省略若干代碼
a = "abc";
}
4.全局變量有什么風(fēng)險(xiǎn),以及如何保護(hù)代碼不受干擾?
全局變量的危險(xiǎn)之處在于其他人可以創(chuàng)建相同名稱的變量,然后覆蓋你正在使用的變量。這在任何語言中都是一個(gè)令人頭疼的問題。
預(yù)防的方法也有很多。其中最常用的方法是創(chuàng)建一個(gè)包含其他所有變量的全局變量:
var applicationName = {};
然后,每當(dāng)你需要?jiǎng)?chuàng)建一個(gè)全局變量的時(shí)候,將其附加到對象上即可。
applicationName.myVariable = "abc";
還有一種方法是將所有的代碼封裝到一個(gè)自動(dòng)執(zhí)行的函數(shù)中,這樣一來,所有聲明的變量都聲明在該函數(shù)的范圍內(nèi)。
(function(){
var a = "abc";
})();
在現(xiàn)實(shí)中,這兩種方法你可能都會(huì)用到。
5.如何通過JavaScript對象中的成員變量迭代?
for(var prop in obj){
// bonus points for hasOwnProperty
if(obj.hasOwnProperty(prop)){
// do something here
}
}
6.什么是閉包(Closure)?
閉包允許一個(gè)函數(shù)定義在另一個(gè)外部函數(shù)的作用域內(nèi),即便作用域內(nèi)的其他東西都消失了,它仍可以訪問該外部函數(shù)內(nèi)的變量。如果應(yīng)聘者能夠說明,在for/next循環(huán)中使用閉包卻不聲明變量來保存迭代變量當(dāng)前值的一些風(fēng)險(xiǎn),那就應(yīng)該給對方加分。
7.請描述你經(jīng)歷過的JavaScript單元測試。
關(guān)于這個(gè)問題,其實(shí)我們只是想看看應(yīng)聘人員是否真的做過JavaScript單元測試。這是一個(gè)開放式問題,沒有特定的正確答案,不過對方至少得能講述進(jìn)程中的一些事情。
感謝各位的閱讀,以上就是“JavaScript有哪些面試題”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對JavaScript有哪些面試題這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
當(dāng)前標(biāo)題:JavaScript有哪些面試題
標(biāo)題URL:http://chinadenli.net/article48/gpdgep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)公司、搜索引擎優(yōu)化、品牌網(wǎng)站建設(shè)、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)