近年來,從事JavaScript的程式設計師越來越多,JavaScript的曝光率也越來越高,如果你想轉行試試JavaScript,不妨收下這份面試題及答案,沒準用得上。當然,如果針對這些問題,你有更棒的答案,歡迎移步至評論區。
1、什麼是JavaScript?(這是基本題,對很多程式設計師來說也是送分題!)
JavaScript是客戶端和伺服器端指令碼語言,可以插入到HTML頁面中,並且是目前較熱門的Web開發語言。同時,JavaScript也是物件導向程式語言。
類似的基本題目還包括:JavaScript都有哪些型別?JavaScript是誰發明的?......
2、列舉Java和JavaScript之間的區別?
Java是一門十分完整、成熟的程式語言。相比之下,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、如何編寫可動態新增新元素的程式碼?
8、什麼是全域性變數?這些變數如何宣告,使用全域性變數有哪些問題?
全域性變數是整個程式碼長度可用的變數,也就是說這些變數沒有任何作用域。var關鍵字用於宣告區域性變數或物件。如果省略var關鍵字,則宣告一個全域性變數。
例:// Declare a global globalVariable = “Test”;
使用全域性變數所面臨的問題是本地和全域性變數名稱的衝突。此外,很難除錯和測試依賴於全域性變數的程式碼。
9、解釋JavaScript中定時器的工作?如果有,也可以說明使用定時器的缺點?
定時器用於在設定的時間執行一段程式碼,或者在給定的時間間隔內重複該程式碼。這通過使用函式setTimeout,setInterval和clearInterval來完成。
-
setTimeout(function,delay)函式用於啟動在所述延遲之後呼叫特定功能的定時器。
-
setInterval(function,delay)函式用於在提到的延遲中重複執行給定的功能,只有在取消時才停止。
-
clearInterval(id)函式指示定時器停止。
定時器在一個執行緒內執行,因此事件可能需要排隊等待執行。
10、ViewState和SessionState有什麼區別?
“ViewState”特定於會話中的頁面。
“SessionState”特定於可在Web應用程式中的所有頁面上訪問的使用者特定資料。
11、什麼是===運算子?
===被稱為嚴格等式運算子,當兩個運算元具有相同的值而沒有任何型別轉換時,該運算子返回true。
12、說明如何使用JavaScript提交表單?
要使用JavaScript提交表單,請使用
document.form [0] .submit();
13、元素的樣式/類如何改變?
可以通過以下方式完成:
document.getElementById(“myText”).style.fontSize = “20?;
或
document.getElementById(“myText”).className = “anyclass”;
14、JavaScript中的迴圈結構都有什麼?
For、While、do-while loops
15、如何在JavaScript中將base字串轉換為integer?
parseInt() 函式解析一個字串引數,並返回一個指定基數的整數。parseInt()將要轉換的字串作為其第一個引數,第二個引數是給定字串的基礎。
為了將4F(基數16)轉換為整數,所使用的程式碼是 :parseInt ("4F", 16);
16、說明“==”和“===”之間的區別?
“==”僅檢查值相等,而“===”是一個更嚴格的等式判定,如果兩個變數的值或型別不同,則返回false。
17、3 + 2 +“7”的結果是什麼?
由於3和2是整數,它們將直接相加。由於7是一個字串,它將會被直接連線,所以結果將是57。
18、說明如何檢測客戶端機器上的作業系統?
為了檢測客戶端機器上的作業系統,應使用navigator.appVersion字串(屬性)。
19、Javascript中的NULL是什麼意思?
NULL用於表示無值或無物件。它意味著沒有物件或空字串,沒有有效的布林值,沒有數值和陣列物件。
20、delete操作符的功能是什麼?
delete操作符用於刪除程式中的所有變數或物件,但不能刪除使用VAR關鍵字宣告的變數。
21、JavaScript中有哪些型別的彈出框?
Alert、Confirm and、Prompt
22、Void(0)怎麼用?
-
Void(0)用於防止頁面重新整理,並在呼叫時傳遞引數“zero”。
-
Void(0)用於呼叫另一種方法而不重新整理頁面。
23、如何強制頁面載入JavaScript中的其他頁面?
必須插入以下程式碼才能達到預期效果:
24、escape字元是用來做什麼的?
使用特殊字元(如單引號,雙引號,撇號和&符號)時,將使用轉義字元(反斜槓)。在字元前放置反斜槓,使其顯示。
例:
25、什麼是JavaScript Cookie?
Cookie是用來儲存計算機中的小型測試檔案,當使用者訪問網站以儲存他們需要的資訊時,它將被建立。
26、解釋JavaScript中的pop()方法?
pop()方法與shift()方法類似,但不同之處在於Shift方法在陣列的開頭工作。此外,pop()方法將最後一個元素從給定的陣列中取出並返回。然後改變被呼叫的陣列。
例:
var cloths = [“Shirt”, “Pant”, “TShirt”];
cloths.pop();
//Now cloth becomes Shirt,Pant
27、在JavaScript中使用innerHTML的缺點是什麼?
如果在JavaScript中使用innerHTML,缺點是:內容隨處可見;不能像“追加到innerHTML”一樣使用;即使你使用+ = like“innerHTML = innerHTML +'html'”舊的內容仍然會被html替換;整個innerHTML內容被重新解析並構建成元素,因此它的速度要慢得多;innerHTML不提供驗證,因此我們可能會在文件中插入有效的和破壞性的HTML並將其中斷。
28、break和continue語句的作用?
-
Break語句從當前迴圈中退出。
-
continue語句繼續下一個迴圈語句。
29、在JavaScript中,dataypes的兩個基本組是什麼?
-
Primitive
-
Reference types
原始型別是數字和布林資料型別。引用型別是更復雜的型別,如字串和日期。
30、如何建立通用物件?
通用物件可以建立為:
var I = new object();
31、operator型別用來做什麼?
'Typeof'是一個運算子,用於返回變數型別的字串描述。
32、哪些關鍵字用於處理異常?
try... Catch-finally用於處理JavaScript中的異常。
33、JavaScript中不同型別的錯誤有幾種?
有三種型別的錯誤:
-
Load time errors:該錯誤發生於載入網頁時,例如出現語法錯誤等狀況,稱為載入時間錯誤,並且會動態生成錯誤。
-
Run time errors:由於在HTML語言中濫用命令而導致的錯誤。
-
Logical Errors:這是由於在具有不同操作的函式上執行了錯誤邏輯而發生的錯誤。
34、在JavaScript中使用的Push方法是什麼?
push方法用於將一個或多個元素新增或附加到陣列的末尾。使用這種方法,可以通過傳遞多個引數來附加多個元素。
35、什麼是JavaScript中的unshift方法?
Unshift方法就像在陣列開頭工作的push方法。該方法用於將一個或多個元素新增到陣列的開頭。
36、物件屬性如何分配?
屬性按以下方式分配給物件:
obj["class"] = 12;
或
obj.class = 12;
37、獲得CheckBox狀態的方式是什麼?
alert(document.getElementById('checkbox1')。checked);
如果CheckBox被檢查,此警報將返回TRUE。
38、解釋window.onload和onDocumentReady?
在載入頁面的所有資訊之前,不執行onload函式。這導致在執行任何程式碼之前會出現延遲。
onDocumentReady在載入DOM之後載入程式碼。這允許早期的程式碼操縱。
39、你將如何解釋JavaScript中的閉包? 什麼時候使用?
Closure是與函式返回時保留在記憶體中的函式相關的本地宣告變數。
例如:
40、一個值如何附加到陣列?
可以以給定的方式將值附加到陣列:
arr [arr.length] = value;
41、解釋for-in迴圈?
for-in迴圈用於迴圈物件的屬性。
for-in迴圈的語法是:
在每次迴圈中,來自物件的一個屬性與變數名相關聯,迴圈繼續,直到物件的所有屬性都被耗盡。
42、描述JavaScript中的匿名函式?
被宣告為沒有任何命名識別符號的函式被稱為匿名函式。一般來說,匿名函式在宣告後無法訪問。
匿名函式宣告:
43、.call()和.apply()之間有什麼區別?
函式.call()和.apply()在使用上非常相似,只是有一點區別。當程式設計師知道函式引數的編號時,使用.call(),因為它們必須在呼叫語句中被提及為引數。另一方面,當不知道數字時使用.apply(),函式.apply()期望引數為陣列。
.call()和.apply()之間的基本區別在於將引數傳遞給函式。它們的用法可以通過給定的例子進行說明。
44、定義事件冒泡?
JavaScript允許DOM元素巢狀在一起。在這種情況下,如果單擊子級的處理程式,父級的處理程式也將執行同樣的工作。
45、什麼樣的布林運算子可以在JavaScript中使用?
“And”運算子(&&),'Or'運算子(||)和'Not'運算子(!)可以在JavaScript中使用。
*運算子沒有括號。
46、一個特定的框架如何使用JavaScript中的超連結定位?
可以通過使用“target”屬性在超連結中包含所需幀的名稱來實現。
<a href=”newpage.htm” target=”newframe”>>New Page</a>
47、在web-garden和web-farm之間有何不同?
web-garden和web-farm都是網路託管系統。唯一的區別是web-garden是在單個伺服器中包含許多處理器的設定,而web-farm是使用多個伺服器的較大設定。
48、如何分配物件屬性?
將屬性分配給物件的方式與賦值給變數值相同。例如,表單物件的操作值以下列方式分配為“‘submit”:Document.form.action =“submit”
49、在JavaScript中讀取和寫入檔案的方法是什麼?
可以通過使用JavaScript擴充套件(從JavaScript編輯器執行),開啟檔案的示例來完成:
fh = fopen(getScriptPath(), 0);
50、在JavaScript中如何使用DOM?
DOM代表文件物件模型,並且負責文件中各種物件的相互互動。DOM是開發網頁所必需的,其中包括諸如段落,連結等物件。可以操作這些物件以包括新增或刪除等操作,DOM還需要向網頁新增額外的功能。除此之外,API的使用比其他更有優勢。
51、JavaScript中如何使用事件處理程式?
事件是由使用者生成活動(例如單擊連結或填寫表單)導致的操作。需要一個事件處理程式來管理所有這些事件的正確執行。事件處理程式是物件的額外屬性。此屬性包括事件的名稱以及事件發生時採取的操作。
52、解釋延遲指令碼在JavaScript中的作用?
預設情況下,在頁面載入期間,HTML程式碼的解析將暫停,直到指令碼停止執行。這意味著,如果伺服器速度較慢或者指令碼特別沉重,則會導致網頁延遲。在使用Deferred時,指令碼會延遲執行直到HTML解析器執行。這減少了網頁載入時間,並且它們的顯示速度更快。
53、JavaScript中的各種功能元件是什麼?
JavaScript中的不同功能元件是:
-
First-class函式:JavaScript中的函式被用作第一類物件。這通常意味著這些函式可以作為引數傳遞給其他函式,作為其他函式的值返回,分配給變數,也可以儲存在資料結構中。
-
巢狀函式:在其他函式中定義的函式稱為巢狀函式。
54、解釋unshift()方法?
該方法在陣列啟動時起作用,與push()不同。 它將所需數量的元素新增到陣列的頂部。例如:
輸出如下所示:
[" joseph "," Jane ", " charlie ", " john "]
55、decodeURI()和encodeURI()是什麼?
EncodeURl()用於將URL轉換為十六進位制編碼。而DecodeURI()用於將編碼的URL轉換回正常。
56、為什麼不建議在JavaScript中使用innerHTML?
innerHTML內容每次重新整理,因此很慢。 在innerHTML中沒有驗證的餘地,因此,更容易在文件中插入錯誤程式碼,從而使網頁不穩定。
57、如何在不支援JavaScript的舊瀏覽器中隱藏JavaScript程式碼?
-
在<script>標籤之後的程式碼中新增“<! - ”,不帶引號。
-
在<script>標籤之前新增“// - >”程式碼中沒有引號。
-
舊瀏覽器現在將JavaScript程式碼視為一個長的HTML註釋。而支援JavaScript的瀏覽器則將“<! - ”和“// - >”作為一行註釋。