Javascript 現(xiàn)代模式,"use strict"

2023-02-17 10:37 更新

長久以來,JavaScript 不斷向前發(fā)展且并未帶來任何兼容性問題。新的特性被加入,舊的功能也沒有改變。

這么做有利于兼容舊代碼,但缺點是 JavaScript 創(chuàng)造者的任何錯誤或不完善的決定也將永遠被保留在 JavaScript 語言中。

這種情況一直持續(xù)到 2009 年 ECMAScript 5 (ES5) 的出現(xiàn)。ES5 規(guī)范增加了新的語言特性并且修改了一些已經(jīng)存在的特性。為了保證舊的功能能夠使用,大部分的修改是默認不生效的。你需要一個特殊的指令 —— "use strict" 來明確地激活這些特性。

“use strict”

這個指令看上去像一個字符串 "use strict" 或者 'use strict'。當(dāng)它處于腳本文件的頂部時,則整個腳本文件都將以“現(xiàn)代”模式進行工作。

比如:

"use strict";

// 代碼以現(xiàn)代模式工作
...

很快我們就會學(xué)習(xí)到函數(shù)(一種組合命令的方式),所以讓我們提前注意一下,"use strict" 可以被放在函數(shù)體的開頭。這樣則可以只在該函數(shù)中啟用嚴格模式。但通常人們會在整個腳本中啟用嚴格模式。

確保 “use strict” 出現(xiàn)在最頂部

請確保 ?"use strict"? 出現(xiàn)在腳本的最頂部,否則嚴格模式可能無法啟用。

這里的嚴格模式就沒有被啟用:

alert("some code");
// 下面的 "use strict" 會被忽略,必須在最頂部。

"use strict";

// 嚴格模式?jīng)]有被激活

只有注釋可以出現(xiàn)在 "use strict" 的上面。

沒有辦法取消 ?use strict?

沒有類似于 ?"no use strict"? 這樣的指令可以使程序返回默認模式。

一旦進入了嚴格模式,就沒有回頭路了。

瀏覽器控制臺

當(dāng)你使用 開發(fā)者控制臺 運行代碼時,請注意它默認是不啟動 use strict 的。

有時,當(dāng) use strict 會對代碼產(chǎn)生一些影響時,你會得到錯誤的結(jié)果。

那么,怎么在控制臺中啟用 use strict 呢?

首先,你可以嘗試搭配使用 ?Shift+Enter? 按鍵去輸入多行代碼,然后將 use strict 放在代碼最頂部,就像這樣:

'use strict'; <Shift+Enter 換行>
//  ...你的代碼
<按下 Enter 以運行>

它在大部分瀏覽器中都有效,像 Firefox 和 Chrome。

如果依然不行,例如你使用的是舊版本的瀏覽器,那么有一種很丑但可靠的啟用 use strict 的方法。將你的代碼放在這樣的包裝器中:

(function() {
  'use strict';

  // ...你的代碼...
})()

我們應(yīng)該使用 “use strict” 嗎?

這個問題的答案好像很顯而易見,但事實并非如此。

有人可能會建議在腳本的最頂部放置 "use strict" 這行代碼…… 但你知道更酷的方式嗎?

現(xiàn)代 JavaScript 支持 “class” 和 “module” —— 高級語言結(jié)構(gòu)(本教程后續(xù)章節(jié)會講到),它們會自動啟用 use strict。因此,如果我們使用它們,則無需添加 "use strict" 指令。

因此,目前我們歡迎將 "use strict"; 寫在腳本的頂部。稍后,當(dāng)你的代碼全都寫在了 class 和 module 中時,你則可以將 "use strict"; 這行代碼省略掉。

目前,我們已經(jīng)基本了解了 use strict。

在接下來的章節(jié)中,當(dāng)我們學(xué)習(xí)語言功能時,我們會看到嚴格模式與舊的模式之間的差異。幸運的是,差異其實沒有那么多。并且,這些差異實際上提升了我們的編程體驗。

本教程的所有例子都默認采用嚴格模式,除非特別指定(非常少)。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號