首頁 > 易卦

20個常見的JavaScript面試問題及技巧

作者:由 程式起點 發表于 易卦日期:2022-08-15

離線瀏覽網頁的優點是什麼

20個常見的JavaScript面試問題及技巧

面試是招聘過程中很重要的一部分。它提供了關於技能、知識和個人承擔具有挑戰性任務的能力的見解。這也是僱主篩選不適合某一職位的候選人的最可靠的方法之一。

作為一名JavaScript開發人員,您必須在參加考試或面試之前做好準備。它將增加你被著名公司僱用的機會。

現在你可能想知道從哪裡開始準備,或者他們會在面試中問什麼問題。

所以,為了幫助你,我整理了一份JavaScript面試中常見的問題列表。每個問題都有一個簡短的答案,你可以在下面回顧。

最後,你會更加自信地回答面試官提出的任何問題。所以,廢話不多說,讓我們開始吧。

1-什麼是JavaScript?

JavaScript是網景在1995年建立的一種指令碼語言。它最初用於流行的web瀏覽器Netscape Navigator。但是,現在,我們可以將它用於客戶端和伺服器端應用程式開發。

我不認為有人會問這個,但我們不應該忘記JavaScript從哪裡來。

列出一些優點的JavaScript?

JavaScript可以在web瀏覽器中離線工作。

它支援多種程式設計範例。例如,我們可以利用面向物件、函式式和指令式程式設計概念。

它擁有最大的開源庫和框架集合。

JavaScript能夠建立線上/線下的遊戲、桌面軟體、網站和移動應用。

不需要學習單獨的程式語言來建立一個網站的前端和後端。所有主要的web瀏覽器都支援JavaScript,它可以使用Node。js在伺服器上執行。

它是一種解釋性語言。這意味著我們在使用它之前不需要構建或編譯它的程式碼。JavaScript指令直接執行。

我們應該使用內部還是外部JavaScript?

當我們只需要在單個web頁面上使用內部JavaScript時,它更適合。然而,對於有多個網頁的網站,最好總是使用外部JavaScript檔案。

為什麼WordPress外掛喜歡在一個檔案中自動timize JavaScript程式碼

在單個檔案中聚合JavaScript原始碼可以減少在生成web頁面時向伺服器發出的請求數量。反過來,它使網站載入速度更快。

例如,假設我們在一個web頁面上包含了10個JavaScript檔案。現在,當我們開啟這個web頁面時,web瀏覽器會向伺服器傳送10個HTTP請求來檢索這些檔案。另一方面,如果我們將所有這些檔案的程式碼聚合為一個檔案,那麼我們只需要向伺服器發出一個請求。

什麼是JavaScript Hoisting 提升

提升是JavaScript中的一個概念,它允許我們在宣告變數和函式之前就使用它們。

基本上,當我們執行JavaScript程式碼時,首先它會自動從程式碼中提取所有變數和函式宣告,並將它們移到作用域的頂部。之後,它開始執行程式碼。

吊裝的主要好處是我們的程式碼工作正確,不會顯示任何錯誤,如“未定義的變數”或“未定義的函式”。

在我的文章《理解變數、範圍和JavaScript中的提升》中瞭解關於提升的更多資訊

預測以下程式碼的輸出

程式碼:

username = “yourname”;

var username; // variable declaration

var username; // redeclared the variable

console。log(username);

輸出:

yourname

解釋:

首先,第2行和第3行中的變數宣告將被視為一條語句。

現在,吊裝的概念將被應用。這意味著JavaScript將把變數宣告移到頂部。之後,程式碼將被執行。

另外,請記住,即使重新宣告變數,儲存在變數中的值也不會丟失。

什麼是JavaScript的“嚴格模式”?

如果我們犯了一個小錯誤,JavaScript的預設行為是非常寬容的。這意味著它不會顯示任何錯誤訊息。但是,有時候在開發過程中,我們需要看到各種各樣的錯誤和警告來除錯程式碼。

下面是JavaScript中“嚴格模式”的使用。基本上,它是一個受限的變體,JavaScript在其中顯示所有錯誤和警告,即使它們是無聲的。

我們可以透過使用“使用嚴格”來啟用“嚴格模式”;指令在我們的指令碼的開始。

8-除了Svelte還有什麼別的選擇嗎?

Svelte是JavaScript程式語言的前端開發框架。它的一些流行的替代品包括:-

React

Vue。js

Angular

什麼是自呼叫函式?

自呼叫函式與普通函式稍有不同,因為它們是在宣告它們的地方立即執行的。

通常,我們首先宣告一個函式,然後呼叫它。但是,JavaScript在執行時自動執行自呼叫函式的程式碼。

需要注意的一點是,這些函式沒有任何名稱。反過來,我們也無法回憶起這些型別的函式。它們也被稱為“匿名函式”。

下面是一個自呼叫函式的示例。

(function (){

var a = 12;

var b = 3;

console。log(a * b);

}());

10-“var”、“let”和“const”的區別是什麼?

20個常見的JavaScript面試問題及技巧

11- “ == ”和“ === ”有什麼區別?

它們都在JavaScript中用於執行兩個值之間的比較。

20個常見的JavaScript面試問題及技巧

12-在“null”和“undefined”關鍵字之間有任何區別嗎?

這兩個關鍵字都表示一個空值。但是,null和undefined之間有兩個基本區別。

20個常見的JavaScript面試問題及技巧

區分“函式宣告”和“函式表示式”?

基本上,函式宣告只是使用關鍵字function、惟一名稱、引數和函式體定義函式的正常過程。然而,當我們將一個函式宣告賦給一個變數時,它就變成了函式表示式。

有趣的是,函式表示式不會被懸掛。這意味著如果您在定義之前嘗試呼叫它們,它們將顯示一個錯誤。

函式宣告:

function full_name(first_name, last_name)

{

return first_name + “ ” + last_name;

}

函式表示式:

var addition = function add(value_1, value_2)

{

return value_1 + value_2;

}

14-什麼是關閉?

在JavaScript中,閉包是另一個函式內部的函式。內部函式可以訪問自己的變數、外部函式中定義的變數以及全域性變數。

關閉的例子:

var a = 2;

function outer()

{

var b = 4;

function inner()

{

var c = 6;

console。log(a + b + c);

}

inner();

}

outer();

15-預測這兩個函式的輸出?它們會返回相同的輸出嗎?

function user1()

{

return {

name: “Juan”

};

}

function user2()

{

return

{

name: “Juan”

};

}

console。log(user1());

console。log(user2());

函式user1()的輸出

{name: “Juan”}

函式user2()的輸出

未定義的

undefined

16- NaN是什麼?

在JavaScript中,NaN代表“不是數字”。它是一個特殊值,當我們不能執行操作時發生。

例如,如果我們嘗試使用一個數字來分割一個字串(例如“Hello World”/ 5)會怎麼樣?

17-解釋forin迴圈?

for-in迴圈是專門設計來一步一步地遍歷物件的所有屬性的。它在每次迭代中從物件中選擇一個屬性,並對其執行所需的操作。

讓我們透過一個例子來理解它。

var user = {

“name”: “Juan”,

“country”: “Germany”,

“website”: “baidu。com”

};

for(var key in user)

{

if(user。hasOwnProperty(key))

{

console。log(key + “ -> ” + user[key]);

}

}

輸出:

name -> Juan

country -> Germany

website -> baidu。com

18-什麼是事件冒泡和捕獲?

在JavaScript DOM中,HTML元素相互巢狀以形成層次結構。

現在,如果父元素和子元素都為特定事件註冊了控制代碼,那麼事件傳播的順序是什麼?

它可以透過兩種方式確定,即事件冒泡和捕獲。

在事件冒泡時,子元素將首先捕獲事件,然後將其傳播給父元素。然而,在事件捕獲中,父元素將首先捕獲事件,然後將其傳播給子元素。

19- JavaScript和ECMA指令碼有什麼區別?

JavaScript是一種指令碼語言,而ECMA指令碼是一套指導原則和規則,用於在不同的web瀏覽器上標準化JavaScript。

20-如何使用JavaScript建立一個cookie ?

在JavaScript中,可以使用文件建立cookie。cookie物件。只需給它分配一個字串值,該值只是一系列用分號分隔的鍵-值對。

JavaScript建立Cookie的例子:-

document。cookie = “username=Juan; expires=Wed, 03 Oct 2030 12:00:00 UTC; path=/”;

結論

面試官通常會問一些刁鑽的問題來迷惑求職者。所以,如果你沒有準備好,那麼很有可能你會失去機會。