[JS奇怪的世界]No.60 嚴謹模式

前言

經過前面幾個章節的理解,其實我們可以知道 JavaScript 的自由性是很高的,但是如果你今天希望 JavaScript 比較嚴格的話,這也是可以的,只需要透過一個方式就可以讓 JavaScript 進入嚴格模式。

嚴謹模式 (strict mode)

一般來講使用嚴謹模式絕對會有一定性的陣痛期,因為人難免會習慣自由,但是使用嚴謹模式主要的目的是為了解決一些不必要的奇怪問題,所以該如何替自己的 JavaScript 開啟嚴謹模式?開啟後又有何差異,就讓我們由範例來瞭解吧。

以下範例是非嚴謹模式,一般來講打錯字是我們最常做的事情,那如果今天這樣子呢?會跳錯嗎?

1
2
3
var person ; 
persom = {};
console.log(persom);

不會,它並不會犯錯,原因為什麼?因為 JavaScript 的自由關係,在語法解析器它在辨別 persom 時,會找看看執行環境下有沒有一下叫 persom,若沒有它就會自作主張幫我們補上 var,那通常這會導致一些 debug 上的問題。

那該怎麼避免這種狀況?這時候就要使用嚴謹模式,嚴謹模式的啟用方式非常簡單,只需要在最前面寫上一段 "use strict" 即可,這時候我們再看看範例會變怎樣。

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

這時候我們會得到 「Persom is not defined uncaught reference error」。

這邊有一個細節要注意 "use strict" 一定要放在所有程式碼最前面,否則會沒有效果。

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

當然也可以針對特定得執行環境下有嚴格模式。

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

使用 "use strict"; 是一個很好的方式,可以幫助我們減少一些不必要的錯誤,但通常也會建議搭配一些 JavaScript 風格管理(ESlint),或是改寫 TypeScript。

那因為自己還沒有學習 TypeScript,所以沒辦法提出範例作解講,但是我將參考資料放在這裡。

TypeScript入門 {學習筆記}

TypeScript 入门教程

另外補充如果想再多了解 嚴謹模式 (strict mode) 的話,這邊我也提供相關資料。

MDN

卡斯伯

iT邦幫忙

圖源

JavaScript 全攻略:克服 JS 奇怪的部分

0%