長久以來,JavaScript 不斷向前發展且並未帶來任何兼容性問題。新的特性被加入,舊的功能也沒有改變。javascript
這麼作有利於兼容舊代碼,但缺點是 JavaScript 創造者的任何錯誤或不完善的決定也將永遠被保留在 JavaScript 語言中。html
這種狀況一直持續到 2009 年 ECMAScript 5 (ES5) 的出現。ES5 規範增長了新的語言特性而且修改了一些已經存在的特性。爲了保證舊的功能可以使用,大部分的修改是默認不生效的。你須要一個特殊的指令 —— "use strict"
來明確地激活這些特性。java
這個指令看上去像一個字符串 "use strict"
或者 'use strict'
。當它處於腳本文件的頂部時,則整個腳本文件都將以「現代」模式進行工做。react
好比:編程
"use strict";
// 代碼以現代模式工做
...
複製代碼
稍後咱們纔會學習函數(一種組合命令的方式)。瀏覽器
但咱們能夠提早了解一下,"use strict"
能夠被放在函數主體的開頭,而不是整個腳本的開頭。這樣則能夠只在該函數中啓用嚴格模式。但一般人們會在整個腳本中啓用嚴格模式。微信
請確保 "use strict"
出如今腳本的最頂部,不然嚴格模式可能沒法啓用。函數
這裏的嚴格模式就沒有被啓用:學習
alert("some code");
// 下面的 "use strict" 會被忽略,必須在最頂部。
"use strict";
// 嚴格模式沒有被激活
複製代碼
只有註釋能夠出如今 "use strict"
的上面。測試
use strict
沒有相似於 "no use strict"
這樣的指令可使程序返回默認模式。
一旦進入了嚴格模式,就沒有退路了。
之後,當你使用瀏覽器控制檯去測試功能時,請注意 use strict
默認不會被啓動。
有時,使用 use strict
會產生一些不同的影響,你會獲得錯誤的結果。
你能夠試試按下 key:Shift+Enter
去輸入多行代碼,而後將 use strict
置頂,就像這樣:
'use strict'; <Shift+Enter 換行> // ...你的代碼 <按下 Enter 以運行> 複製代碼
它在大部分瀏覽器中都有效,像 Firefox 和 Chrome。
若是依然不行,那確保 use strict
被開啓的最可靠的方法是,像這樣將代碼輸入到控制檯:
(function() {
'use strict';
// ...你的代碼...
})()
複製代碼
咱們還沒說到使用 "use strict"
與「默認」模式的區別。
在接下來的章節中,當咱們學習語言功能時,咱們會標註嚴格模式與默認模式的差別。幸運的是,差別其實沒有那麼多。而且這些差別可讓咱們更好地編程。
當前,通常來講了解這些就夠了:
"use strict"
指令將瀏覽器引擎轉換爲「現代」模式,改變一些內建特性的行爲。咱們會在以後的學習中瞭解這些細節。"use strict"
放置在整個腳本或函數的頂部來啓用。一些新語言特性諸如 "classes" 和 "modules" 也會自動開啓嚴格模式。"use strict"
啓動腳本。本教程的全部例子都默認採用嚴格模式,除非特別指定(很是少)。本教程首發於微信公衆號「技術漫談」。
現代 JavaScript 教程:開源的現代 JavaScript 從入門到進階的優質教程。React 官方文檔推薦,與 MDN 並列的 JavaScript 學習教程。
在線免費閱讀:zh.javascript.info/
掃描下方二維碼,關注微信公衆號「技術漫談」,訂閱更多精彩內容。