前端開發就業面試題-JavaScript篇

1.什麼是JavaScript?(這是基本題,對不少程序員來講也是送分題!)html

JavaScript是客戶端和服務器端腳本語言,能夠插入到HTML頁面中,而且是目前較熱門的Web開發語言。同時,JavaScript也是面向對象編程語言。java

相似的基本題目還包括:JavaScript都有哪些類型?JavaScript是誰發明的?...node

2.列舉Java和JavaScript之間的區別?程序員

Java是一門十分完整、成熟的編程語言。web

相比之下,JavaScript是一個能夠被引入HTML頁面的編程語言。這兩種語言並不徹底相互依賴,而是針對不一樣的意圖而設計的。Java是一種面向對象編程(OOPS)或結構化編程語言,相似的如C ++或C,而JavaScript是客戶端腳本語言,它被稱爲非結構化編程。編程

3.JavaScript和ASP腳本相比,哪一個更快?數組

JavaScript更快。JavaScript是一種客戶端語言,所以它不須要Web服務器的協助來執行。另外一方面,ASP是服務器端語言,所以老是比JavaScript慢。值得注意的是,Javascript如今也可用於服務器端語言(nodejs)。服務器

4.什麼是負無窮大?網絡

負無窮大是JavaScript中的一個數字,能夠經過將負數除以零來獲得。數據結構

5.如何將JavaScript代碼分解成幾行嗎?

在字符串語句中能夠經過在第一行末尾使用反斜槓「」來完成。

例:document.write("This is a program")

若是不是在字符串語句中更改成新行,那麼javaScript會忽略行中的斷點。

例:var x=1, y=2, z= x+y

上面的代碼是完美的,但並不建議這樣作,由於阻礙了調試。

6.什麼是未聲明和未定義的變量?

未聲明的變量是程序中不存在且未聲明的變量。若是程序嘗試讀取未聲明變量的值,則會遇到運行時錯誤。

未定義的變量是在程序中聲明但還沒有給出任何值的變量。若是程序嘗試讀取未定義變量的值,則返回未定義的值。

7.什麼是全局變量?這些變量如何聲明,使用全局變量有哪些問題?

全局變量是整個代碼長度可用的變量,也就是說這些變量沒有任何做用域。var關鍵字用於聲明局部變量或對象。若是省略var關鍵字,則聲明一個全局變量。

例:// Declare a global globalVariable = 「Test」

使用全局變量所面臨的問題是本地和全局變量名稱的衝突。此外,很難調試和測試依賴於 全局變量的代碼。

8.解釋JavaScript中定時器的工做?若是有,也能夠說明使用定時器的缺點?

定時器用於在設定的時間執行一段代碼,或者在給定的時間間隔內重複該代碼。這經過使用函數setTimeout,setInterval和clearInterval來完成。

**setTimeout(function,delay)**函數用於啓動在所述延遲以後調用特定功能的定時器。

**setInterval(function,delay)**函數用於在提到的延遲中重複執行給定的功能,只有在取消時才中止。

**clearInterval(id)**函數指示定時器中止。

定時器在一個線程內運行,所以事件可能須要排隊等待執行。

9.ViewState和SessionState有什麼區別?

「ViewState」特定於會話中的頁面。

「SessionState」特定於可在Web應用程序中的全部頁面上訪問的用戶特定數據。

10.什麼是===運算符?

===被稱爲嚴格等式運算符,當兩個操做數具備相同的值而沒有任何類型轉換時,該運算符返回true。

11.JavaScript中的循環結構都有什麼?

for、while、do-while loops

12.如何在JavaScript中將base字符串轉換爲integer?

parseInt() 函數解析一個字符串參數,並返回一個指定基數的整數。parseInt()將要轉換的字符串做爲其第一個參數,第二個參數是給定字符串的基礎。爲了將4F(基數16)轉換爲整數,所使用的代碼是:parseInt("4F", 16)

13.說明「==」和「===」之間的區別?

「==」僅檢查值相等,而「===」是一個更嚴格的等式斷定,若是兩個變量的值或類型不一樣,則返回false。

14.3+2+「7」的結果是什麼?

因爲3和2是整數,它們將直接相加。因爲7是一個字符串,它將會被直接鏈接,因此結果將是57。

15.說明如何檢測客戶端機器上的操做系統?

爲了檢測客戶端機器上的操做系統,應使用avigator.appVersion 字符串(屬性)。

16.Javascript中的NULL是什麼意思?

NULL用於表示無值或無對象。它意味着沒有對象或空字符串,沒有有效的布爾值,沒有 數值和數組對象。

17.delete操做符的功能是什麼?

delete操做符用於刪除程序中的全部變量或對象,但不能刪除使用 VAR關鍵字聲明的變量。

18.JavaScript中有哪些類型的彈出框?

Alert、Confirm and Prompt

19.Void(0)怎麼用?

Void(0)用於防止頁面刷新,並在調用時傳遞參數「zero」。 Void(0)用於調用另外一種方法而不刷新頁面。

20.如何強制頁面加載JavaScript中的其餘頁面?

必須插入如下代碼才能達到預期效果:

21.escape字符是用來作什麼的?

使用特殊字符(如單引號,雙引號,撇號和&符號)時,將使用轉義字符(反斜槓)。在字符前放置反斜槓,使其顯示。 例:

22.什麼是JavaScript Cookie?

Cookie是用來存儲計算機中的小型測試文件,當用戶訪問網站以存儲他們須要的信息時,它將被建立。

23.解釋JavaScript中的pop()方法?

pop()方法與shift()方法相似,但不一樣之處在於Shift方法在數組的開頭工做。此外,pop()方法將最後一個元素從給定的數組中取出並返回。而後改變被調用的數組。

例:

var cloths = [「Shirt」, 「Pant」, 「TShirt」];

cloths.pop();

//Now cloth becomes Shirt,Pant

24.在JavaScript中使用innerHTML的缺點是什麼?

若是在JavaScript中使用innerHTML,缺點是:

1)內容隨處可見;

2)不能像「追加到innerHTML」同樣使用;

3)即便你使用+ = like「innerHTML = innerHTML +'html'」舊 的內容仍然會被html替換;

4)整個innerHTML內容被從新解析並構建成元素,所以它的速度要慢得多;

5)innerHTML不提供驗證,所以咱們可能會在文檔中插入有效的和破壞性的HTML並將其中斷。

25.break和continue語句的做用?

break語句從當前循環中退出。

continue語句繼續下一個循環語句。

26.在JavaScript中,dataypes的兩個基本組是什麼?

Primitive

Reference types

原始類型是數字和布爾數據類型。引用類型是更復雜的類型,如字符串和日期。

27.如何建立通用對象?

通用對象能夠建立爲:

var I = new object();

28.operator類型用來作什麼?

"Typeof"是一個運算符,用於返回變量類型的字符串描述。

29.哪些關鍵字用於處理異常?

try... Catch-finally用於處理JavaScript中的異常。

30.JavaScript中不一樣類型的錯誤有幾種?

有三種類型的錯誤:

**Load time errors:**該錯誤發生於加載網頁時,例如出現語法錯誤等情況,稱爲加載時間 錯誤,而且會動態生成錯誤。

**Run time errors:**因爲在HTML 語言中濫用命令而致使的錯誤。

**Logical Errors:**這是因爲在具備不一樣操做的函數上執行了錯誤邏輯而發生的錯誤。

31.在JavaScript中使用的Push方法是什麼?

push方法用於將一個或多個元素添加或附加到數組的末尾。使用這種方法,能夠經過傳遞多個參數來附加多個元素。

32.什麼是JavaScript中的unshift方法?

Unshift方法就像在數組開頭工做的push方法。該方法用於將一個或多個元素添加到數組的開頭。

33.對象屬性如何分配?

屬性按如下方式分配給對象:

obj["class"] = 12或obj.class = 12

34.解釋window.onload和onDocumentReady?

在載入頁面的全部信息以前,不運行onload函數。這致使在執行任何代碼以前會出現延遲。

onDocumentReady在加載DOM以後加載代碼。這容許早期的代碼操縱。

35.你將如何解釋JavaScript中的閉包?何時使用?

Closure是與函數返回時保留在內存中的函數相關的本地聲明變量。

36.一個值如何附加到數組?

能夠以給定的方式將值附加到數組:

arr[arr.length]=value

37.解釋for-in循環?

for-in循環用於循環對象的屬性。

for-in循環的語法是:

在每次循環中,來自對象的一個屬性與變量名相關聯,循環繼續,直到對象的全部屬性都 被耗盡。

38.描述JavaScript中的匿名函數?

被聲明爲沒有任何命名標識符的函數被稱爲匿名函數。通常來講,匿名函數在聲明後沒法訪問。 匿名函數聲明:

39. .call()和.apply()之間有什麼區別?

函數.call()和.apply()在使用上很是類似,只是有一點區別。當程序員知道函數參數的編號時,使用.call(),由於它們必須在調用語句中被說起爲參數。另外一方面,當不知道數字時使用.apply(),函數.apply()指望參數爲數組。.call()和.apply()之間的基本區別在於將參數傳遞給函數。它們的用法能夠經過給定的例子進行說明。

40.定義事件冒泡?

JavaScript容許DOM元素嵌套在一塊兒。在這種狀況下,若是單擊子級的處理程序,父級的處理程序也將執行一樣的工做。

41.什麼樣的布爾運算符能夠在JavaScript中使用?

「And」運算符(&&),'Or'運算符(||)和'Not'運算符(!)能夠在JavaScript中使用。

*運算符沒有括號。

42.在web-garden和web-farm之間有何不一樣?

web-garden和web-farm都是網絡託管系統。惟一的區別是web-garden是在單個服務器中包含許多處理器的設置,而web-farm是使用多個服務器的較大設置。

43.如何分配對象屬性?

將屬性分配給對象的方式與賦值給變量值相同。

例如,表單對象的操做值如下列方式分配爲「submit」:Document.form.action =「submit」

44.在JavaScript中讀取和寫入文件的方法是什麼?

能夠經過使用JavaScript擴展(從JavaScript編輯器運行),打開文件的示例來完成:

fh=fopen(getScriptPath(), 0)

45.在JavaScript中如何使用DOM?

DOM表明文檔對象模型,而且負責文檔中各類對象的相互交互。DOM是開發網頁所必需的,其中包括諸如段落,連接等對象。能夠操做這些對象以包括添加或刪除等操做,DOM還須要向網頁添加額外的功能。除此以外,API的使用比其餘更有優點。

46.JavaScript中如何使用事件處理程序?

事件是由用戶生成活動(例如單擊連接或填寫表單)致使的操做。須要一個事件處理程序來管理全部這些事件的正確執行。事件處理程序是對象的額外屬性。此屬性包括事件的名稱以及事件發生時採起的操做。

47.解釋延遲腳本在JavaScript中的做用?

默認狀況下,在頁面加載期間,HTML代碼的解析將暫停,直到腳本中止執行。這意味着,若是服務器速度較慢或者腳本特別沉重,則會致使網頁延遲。在使用Deferred時,腳本會延遲執行直到HTML解析器運行。這減小了網頁加載時間,而且它們的顯示速度更快。

48.JavaScript中的各類功能組件是什麼?

JavaScript中的不一樣功能組件是:

First-class函數:JavaScript中的函數被用做第一類對象。這一般意味着這些函數能夠做爲參數傳遞給其餘函數,做爲其餘函數的值返回,分配給變量,也能夠存儲在數據結構中。

嵌套函數:在其餘函數中定義的函數稱爲嵌套函數。

49.解釋unshift()方法?

該方法在數組啓動時起做用,與push()不一樣。它將所需數量的元素添加到數組的頂部。 例如:

輸出以下所示:[「joseph」,「Jane」, 「charlie」, 「john」]

50.decodeURI()和encodeURI()是什麼?

EncodeURl()用於將URL轉換爲十六進制編碼。而DecodeURI()用於將編碼的URL轉換回正常。

51.爲何不建議在JavaScript中使用innerHTML?

innerHTML內容每次刷新,所以很慢。在innerHTML中沒有驗證的餘地,所以,更容易在文檔中插入錯誤代碼,從而使網頁不穩定。

相關文章
相關標籤/搜索