JavaScript的嚴格模式(Strict Mode)是一種在代碼中啟用的特殊模式,用于提供更嚴格的語法和錯誤檢查,以改善代碼質量和增強安全性,使用嚴格模式可以幫助大家避免一些常見的錯誤,并禁用一些不推薦使用的特性,
要啟用嚴格模式,可以在代碼的頂部或函式體的開頭添加以下陳述句:
"use strict";
啟用嚴格模式后,會應用一些限制和變化,包括以下幾個方面:
1. 變數必須先宣告后使用:在嚴格模式下,變數必須通過 var、let 或 const 關鍵字進行宣告,否則會拋出 ReferenceError,在非嚴格模式下,未宣告的變數會被隱式創建,并被添加到全域物件(比如瀏覽器環境中的 window 物件)中,
2. 禁止洗掉變數、函式或函式引數:在嚴格模式下,使用 delete 運算子洗掉變數、函式或函式引數會拋出 SyntaxError,
3. 禁止對只讀屬性進行賦值:在嚴格模式下,對只讀屬性(通過 const 關鍵字宣告的常量)進行賦值會拋出 TypeError,
4. 禁止使用八進制字面量:在嚴格模式下,以 0 開頭的數字會被視為八進制字面量,這在非嚴格模式下是允許的,嚴格模式下,使用八進制字面量會拋出 SyntaxError,
5. 限制 this 值:在嚴格模式下,函式內部的 this 值不再是全域物件(比如瀏覽器環境中的 window 物件),而是undefined,除非通過 call()、apply() 或 bind() 明確指定,
6. 禁止使用重復的函式引數名:在嚴格模式下,函式引數名不能重復,在非嚴格模式下,重復的函式引數名會被忽略,
7. 禁止使用 with 陳述句:在嚴格模式下,使用 with 陳述句會拋出 SyntaxError,with 陳述句在非嚴格模式下允許將物件的屬性添加到作用域鏈中,但這被認為是不推薦使用的特性,因為它可能導致代碼可讀性和性能問題,
8. 限制 eval 和 arguments 的賦值:在嚴格模式下,無法對 eval 和 arguments 進行賦值,在非嚴格模式下,這種賦值是允許的,
下面是一些使用JavaScript嚴格模式的例子,展示了嚴格模式下的限制和行為變化:
1. 變數必須先宣告后使用:
"use strict"; x = 10; // 拋出 ReferenceError: x is not defined
在嚴格模式下,對未宣告的變數進行賦值會拋出錯誤,
2. 禁止洗掉變數:
"use strict"; var x = 10; delete x; // 拋出 SyntaxError: Delete of an unqualified identifier in strict mode.
在嚴格模式下,無法使用 delete 運算子洗掉變數,
3. 禁止對只讀屬性進行賦值:
"use strict"; var obj = {}; Object.defineProperty(obj, "x", { value: 10, writable: false }); obj.x = 20; // 拋出 TypeError: Cannot assign to read only property 'x' of object ' <Object>'
在嚴格模式下,對只讀屬性進行賦值會拋出錯誤,
4. 八進制字面量的限制:
"use strict"; var num = 012; // 拋出 SyntaxError: Octal literals are not allowed in strict mode.
在嚴格模式下,使用八進制字面量會被視為語法錯誤,
5. 函式中的 this 值為 undefined:
"use strict"; function showThis() { console.log(this); } showThis(); // undefined
在嚴格模式下,如果函式內部的 this 值未明確指定,它將保持為 undefined,
這些是嚴格模式下的一些限制和變化,它們有助于提高代碼的可靠性和可維護性,在撰寫新代碼或更新現有代碼時,啟用嚴格模式是一種良好的實踐,可以幫助捕獲潛在的錯誤并遵循更嚴格的編碼標準,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/553929.html
標籤:其他
上一篇:神器vConsole!快速定位移動端問題,加快開發效率
下一篇:返回列表
