嚴謹模式

JavaScript 有一個特別的選擇性模式來偵測我們所寫的程式碼,開啟它可以迫使 JavaScript Engine 更嚴謹的審視程式碼,它就是嚴謹模式 strict mode

只要在 JavaScript 中加上字串 use strict,就會開啟嚴謹模式 strict mode。在嚴謹模式下,會有許多更嚴謹的規範來避免開發上的疏失,如下範例:

如果先建立一個變數,但在之後賦值時拼錯了,一般情況下並不會有任何錯誤,只是前者會因為沒有值而為預設的 undefined

1
2
3
4
5
var person;

persom = {};
console.log(person); // undefined
console.log(persom); // {}

但如果加上 use strict 來開啟嚴謹模式,就會因為拼錯的 persom 沒有宣告而跳錯。

1
2
3
4
5
6
7
"use strict";

var person;

persom = {};
console.log(person); // undefined
console.log(persom); // {}

嚴謹模式除了可以在整個檔案開啟,也可以單獨在函式作用域中開啟

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function logNewPerson() {
"use strict";

var person2;

persom2 = {};
console.log(person2); // undefined
console.log(persom2); // {}
}

var person;

persom = {};
console.log(person); // undefined
console.log(persom); // {}
logNewPerson();

嚴謹模式固然好用,但需要選擇性開啟的原因是每個 JavaScript Engine 對嚴謹模式所支援的規範並不相同,因此我們無法完全依賴它來開發。

另外有一種情況是如果我們在一支主要的 JavaScript 檔案開啟嚴謹模式,並透過它引入其它的 JavaScript 檔案,但其它的 JavaScript 檔案在開發時並沒有開啟且遵守嚴謹模式的規範,那麼這可能為你帶來一些預料之外的問題。

資料來源

MDN Mozilla Developer Network
Udemy-JavaScript: Understanding the Weird Parts