為什麼我們在 JavaScript 中使用“use strict”?
“use strict”是一個指令,它是一個文字表達式。它是在 JavaScript 1.8.5 中引入的。顧名思義,“use strict”表示程式碼將在嚴格模式下執行。
使用“use strict”的益處
更容易編寫“安全”的 JavaScript 程式碼。
它將以前被接受的“不良語法”更改為真正的錯誤。例如,變數名輸入錯誤會建立一個新的全域性變數。在使用嚴格模式時,這將丟擲一個錯誤。這導致無法意外地建立全域性變數。
程式設計師不會收到任何關於為不可寫屬性賦值的錯誤反饋。
但在嚴格模式下,任何對不可寫屬性、只讀屬性、不存在的屬性、不存在的變數或不存在的物件的賦值都將丟擲一個錯誤。
要宣告嚴格模式,請在開頭新增關鍵字“use strict”。對於全域性範圍,請在指令碼開頭宣告它。
我們可以為整個指令碼、函式或模組宣告嚴格模式。
在嚴格模式下,以下內容不允許 -
使用未定義的變數或物件。
刪除變數、物件或函式。
引數名稱重複。
寫入只讀或只讀屬性。
刪除不可刪除的屬性。
使用“eval”和“arguments”作為變數。
with 語句。
讓我們藉助示例來了解上述情況。
未定義的變數或物件
在嚴格模式下不允許使用未定義的變數或物件。
"use strict"; a = 1; // this will throw an error because a is not defined
示例 1
在下面的程式中,變數“a”未定義,並且處於嚴格模式。
<!DOCTYPE html> <html> <body> <p>An error would come, since you have used a variable, but forgot to declare it </p> <p>Press F8 to see the error. </p> <script> "use strict"; a = 1; </script> </body> </html>
輸出
在成功執行上述程式碼後,它將產生以下結果 -
An error would come, since you have used a variable, but forgot to declare it Press F8 to see the error.
並且我們在控制檯中收到以下錯誤訊息 -

刪除變數、物件或函式
在嚴格模式下,不允許刪除變數、物件或函式。當嘗試刪除它們時,它將顯示錯誤。
"use strict"; Let a = 1; delete a; // this will throw an error
示例 2
在下面的程式中,變數“a”未定義,並且 i
<!DOCTYPE html> <html> <body> <script> "use strict"; let a = 1.02; delete a; </script> </body> </html>
輸出
在成功執行上述程式碼後,我們在控制檯中收到以下錯誤訊息 -

引數名稱重複
在嚴格模式下,不允許引數名稱重複。當嘗試使用兩個或多個引數的相同名稱時,它將顯示錯誤。
"use strict";
function f(x, x) {}; // this will throw an error示例
在下面的程式中,函式 f 的引數重複,而處於嚴格模式。
<!DOCTYPE html>
<html>
<body>
<script>
"use strict";
function f(x, x) {};
</script>
</body>
</html>輸出
在成功執行上述程式碼後,我們在控制檯中收到以下錯誤訊息 -

寫入只讀或只讀屬性
在嚴格模式下,不允許寫入不可寫(只讀)或只讀屬性。當嘗試寫入只讀或只讀屬性時,它將顯示錯誤。
示例
在下面的程式中,屬性 z 不可寫,我們嘗試為其賦值,這會顯示錯誤。
<!DOCTYPE html>
<html>
<body>
<script>
"use strict";
const obj = {};
Object.defineProperty(obj, "z", {writable:false});
obj.z = 2; // This will cause an error
</script>
</body>
</html>輸出
在成功執行上述程式碼後,我們在控制檯中收到以下錯誤訊息 -

示例 - 刪除不可刪除的屬性
在嚴格模式下,不允許刪除不可刪除的屬性。在下面的程式中,我們嘗試刪除 Object 的“prototype”屬性。
<!DOCTYPE html> <html> <body> <script> "use strict"; delete Object.prototype; </script> </body> </html>
輸出
在成功執行上述程式碼後,我們在控制檯中收到以下錯誤訊息 -

示例 - 使用“eval”和“arguments”作為變數
在嚴格模式下,不允許使用“eval”和“arguments”作為變數。
在下面的程式中,我們嘗試使用“eval”作為變數。
<!DOCTYPE html> <html> <body> <script> "use strict"; let eval = 2.45; </script> </body> </html>
輸出
這將產生以下結果 -

示例 - with 語句
在嚴格模式下,不允許使用 with 語句。
<!DOCTYPE html>
<html>
<body>
<script>
"use strict";
with (Math){x = sin(0)};
</script>
</body>
</html>輸出
這將產生以下結果 -

資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP