兩分鐘理解 JavaScript 嚴(yán)格模式,避開(kāi)這些常見(jiàn)陷阱
JavaScript的嚴(yán)格模式(Strict Mode)是ECMAScript 5引入的一項(xiàng)重要特性,旨在讓代碼運(yùn)行更安全,同時(shí)避免一些常見(jiàn)的編程錯(cuò)誤。通過(guò)簡(jiǎn)單地在腳本或函數(shù)的開(kāi)頭添加"use strict";聲明,我們就可以啟用這一模式。

為什么使用嚴(yán)格模式?
嚴(yán)格模式通過(guò)將一些普通JavaScript中的"靜默錯(cuò)誤"轉(zhuǎn)變?yōu)閽伋鲥e(cuò)誤,來(lái)幫助我們編寫(xiě)更加健壯的代碼。它還修復(fù)了一些阻礙JavaScript引擎優(yōu)化的缺陷。
如何啟用嚴(yán)格模式
// 全局啟用
"use strict";
// 或在函數(shù)內(nèi)部啟用
function myFunction() {
"use strict";
// 函數(shù)代碼
}嚴(yán)格模式下的常見(jiàn)陷阱
1. 未聲明變量
在非嚴(yán)格模式下,給未聲明的變量賦值會(huì)自動(dòng)創(chuàng)建一個(gè)全局變量。在嚴(yán)格模式下,這會(huì)拋出錯(cuò)誤。
"use strict";
x = 10; // 錯(cuò)誤:x未定義正確做法:始終使用var、let或const聲明變量。
2. 刪除變量或函數(shù)
"use strict";
var x = 10;
delete x; // 錯(cuò)誤:不能刪除變量
function test() {}
delete test; // 錯(cuò)誤:不能刪除函數(shù)3. 重復(fù)參數(shù)名

正確做法:確保函數(shù)參數(shù)名唯一。
4. 八進(jìn)制語(yǔ)法
"use strict";
var num = 010; // 錯(cuò)誤:八進(jìn)制語(yǔ)法無(wú)效正確做法:使用0o前綴表示八進(jìn)制。
var num = 0o10; // 合法的八進(jìn)制表示5. with語(yǔ)句

正確做法:明確指定對(duì)象。
var x = Math.cos(Math.PI);6. 賦值給只讀屬性

7. this的值
在嚴(yán)格模式下,函數(shù)內(nèi)部的this不會(huì)默認(rèn)指向全局對(duì)象。
"use strict";
function showThis() {
console.log(this); // undefined,非嚴(yán)格模式下為全局對(duì)象
}
showThis();避開(kāi)這些陷阱,不僅能讓我們的代碼更加健壯,還能使我們養(yǎng)成更好的編程習(xí)慣。






























