兩分鐘理解 JavaScript 嚴格模式,避開這些常見陷阱
JavaScript的嚴格模式(Strict Mode)是ECMAScript 5引入的一項重要特性,旨在讓代碼運行更安全,同時避免一些常見的編程錯誤。通過簡單地在腳本或函數的開頭添加"use strict";聲明,我們就可以啟用這一模式。
為什么使用嚴格模式?
嚴格模式通過將一些普通JavaScript中的"靜默錯誤"轉變為拋出錯誤,來幫助我們編寫更加健壯的代碼。它還修復了一些阻礙JavaScript引擎優化的缺陷。
如何啟用嚴格模式
// 全局啟用
"use strict";
// 或在函數內部啟用
function myFunction() {
"use strict";
// 函數代碼
}
嚴格模式下的常見陷阱
1. 未聲明變量
在非嚴格模式下,給未聲明的變量賦值會自動創建一個全局變量。在嚴格模式下,這會拋出錯誤。
"use strict";
x = 10; // 錯誤:x未定義
正確做法:始終使用var、let或const聲明變量。
2. 刪除變量或函數
"use strict";
var x = 10;
delete x; // 錯誤:不能刪除變量
function test() {}
delete test; // 錯誤:不能刪除函數
3. 重復參數名
正確做法:確保函數參數名唯一。
4. 八進制語法
"use strict";
var num = 010; // 錯誤:八進制語法無效
正確做法:使用0o前綴表示八進制。
var num = 0o10; // 合法的八進制表示
5. with語句
正確做法:明確指定對象。
var x = Math.cos(Math.PI);
6. 賦值給只讀屬性
7. this的值
在嚴格模式下,函數內部的this不會默認指向全局對象。
"use strict";
function showThis() {
console.log(this); // undefined,非嚴格模式下為全局對象
}
showThis();
避開這些陷阱,不僅能讓我們的代碼更加健壯,還能使我們養成更好的編程習慣。