[JavaScriptWeird]No.74 Strict mode 嚴謹模式

前言

好的,終於又回到主線了,趕緊把這個坑填好。這篇主要是介紹關於 JavaScript 的嚴謹模式 (Strict mode),當開啟這個模式後,JavaScript 的部分行為就會比較不一樣了,就讓我們一塊來看看吧。

嚴謹模式 (Strict mode)

JavaScript 的特性就是比較彈性自由,但為人詬病的也是因為太過彈性自由導致缺乏規範,讓沒有經驗的開發者很容易就寫出預料外的 BUG。

而嚴謹模式就是在告訴 JavaScript 要用比較多的規範、限制來編譯這些程式碼,雖然這沒辦法完全改變 JavaScript 過於自由的問題,但還是幫助我們避免一些奇怪的錯誤。

  • 例如變數打錯字的問題
    1
    2
    3
    var person;  
    persom = {};
    console.log(persom);

像是把 person 打成 persom 的錯誤, JavaScript 會認為這是對的。

而這麼做不會錯誤的原因是,JavaScript 把 persom 設定為 全域 window 物件內的屬性,顯然地這並不是我們所預想的樣子。

因此我們需要告訴 JavaScript 打開嚴謹模式

1
2
3
4
'use strict'  
var person;
persom = {};
console.log(persom);

當然嚴謹模式能做的不只這些,更多特性可以到 MDN 的文件查看:

全域、個別使用嚴謹模式

嚴謹模式允許全域使用以及個別地在函式使用,使用方法很簡單,就只需要在 JavaScript 檔案的第一行或者是在函式內的第一行內宣告使用即可。

全域使用嚴謹模式

1
2
3
4
'use strict'  
var person;
persom = {};
console.log(persom);

函式個別使用嚴謹模式

1
2
3
4
5
6
7
8
9
10
11
function test(){  
'use strict'
var person2;
persom2 = {};
console.log(persom2);
}

var person;
persom = {};
console.log(persom);
test();

嚴謹模式似乎很少被使用

因為嚴謹模式並不是必要的,這只是一個額外的功能,而且並不是每個 JavaScript 引擎的嚴謹模式特性表現都一樣,因此在使用上會有比較多的限制。

但如果我們仍然希望讓 JavaScript 更嚴格,可以試著使用 ESlint 配合 TypeScript 讓程式碼的品質更上一層樓。

0%