長久以來,JavaScript 不斷向前發展且並未帶來任何兼容性問題。新的特性被加入,舊的功能也沒有改變。
這麽做有利于兼容舊代碼,但缺點是 JavaScript 創造者的任何錯誤或不完善的決定也將永遠被保留在 JavaScript 語言中。
這種情況壹直持續到 2009 年 ECMAScript 5 (ES5) 的出現。ES5 規範增加了新的語言特性並且修改了壹些已經存在的特性。爲了保證舊的功能能夠使用,大部分的修改是默認不生效的。妳需要壹個特殊的指令 —— "use strict"
來明確地激活這些特性。
這個指令看上去像壹個字符串 "use strict"
或者 'use strict'
。當它處于腳本文件的頂部時,則整個腳本文件都將以“現代”模式進行工作。
比如:
"use strict"; // 代碼以現代模式工作 ...
很快我們就會學習到函數(壹種組合命令的方式),所以讓我們提前注意壹下,"use strict"
可以被放在函數體的開頭。這樣則可以只在該函數中啓用嚴格模式。但通常人們會在整個腳本中啓用嚴格模式。
確保 “use strict” 出現在最頂部
請確保 "use strict"
出現在腳本的最頂部,否則嚴格模式可能無法啓用。
這裏的嚴格模式就沒有被啓用:
alert("some code"); // 下面的 "use strict" 會被忽略,必須在最頂部。 "use strict"; // 嚴格模式沒有被激活
只有注釋可以出現在 "use strict"
的上面。
沒有辦法取消 use strict
沒有類似于 "no use strict"
這樣的指令可以使程序返回默認模式。
壹旦進入了嚴格模式,就沒有回頭路了。
當妳使用 開發者控制台 運行代碼時,請注意它默認是不啓動 use strict
的。
有時,當 use strict
會對代碼産生壹些影響時,妳會得到錯誤的結果。
那麽,怎麽在控制台中啓用 use strict
呢?
首先,妳可以嘗試搭配使用Shift+Enter按鍵去輸入多行代碼,然後將 use strict
放在代碼最頂部,就像這樣:
'use strict'; <Shift+Enter 換行> // ...妳的代碼 <按下 Enter 以運行>
它在大部分浏覽器中都有效,像 Firefox 和 Chrome。
如果依然不行,例如妳使用的是舊版本的浏覽器,那麽有壹種很醜但可靠的啓用 use strict
的方法。將妳的代碼放在這樣的包裝器中:
(function() { 'use strict'; // ...妳的代碼... })()
這個問題的答案好像很顯而易見,但事實並非如此。
有人可能會建議在腳本的最頂部放置 "use strict"
這行代碼…… 但妳知道更酷的方式嗎?
現代 JavaScript 支持 “class” 和 “module” —— 高級語言結構(本教程後續章節會講到),它們會自動啓用 use strict
。因此,如果我們使用它們,則無需添加 "use strict"
指令。
因此,目前我們歡迎將 "use strict";
寫在腳本的頂部。稍後,當妳的代碼全都寫在了 class 和 module 中時,妳則可以將 "use strict";
這行代碼省略掉。
目前,我們已經基本了解了 use strict
。
在接下來的章節中,當我們學習語言功能時,我們會看到嚴格模式與舊的模式之間的差異。幸運的是,差異其實沒有那麽多。並且,這些差異實際上提升了我們的編程體驗。
本教程的所有例子都默認采用嚴格模式,除非特別指定(非常少)。