除了正常運行模式以外,ECMAScript5還引入了第二種運行模式:嚴格模式(strict mode)模式。嚴格模式是爲了JavaScript定義了一種不一樣的解析與執行模型。在嚴格模式下,ECMASript3中的一些不肯定的行爲將獲得處理,並且對某些不安全的操做也會拋出錯誤。java
引入嚴格模式的目的:瀏覽器
1.消除JavaScript語法的一些不合理,不規範,不嚴謹之處,減小一些怪異行爲; 2.消除一些不肯定的行爲,保證代碼運行的安全; 3.提升編譯器效率,增長運行速度; 4.爲將來新版本的Javascript作好鋪墊。
在嚴格模式下,JavaScript的執行執行結果會有很大的不一樣,支持嚴格模式的瀏覽器包括:安全
IE10+,Firefox4+,Safari5.1+,Opera12+和Chrome。
若是想要在整個腳本啓用嚴格模式,能夠在頂部添加以下代碼:函數
「use strict」 這行代碼看起來更新是字符串,並且也沒有賦值給任何變量,但其實它是一個編譯指示(pragma),用於告訴支持的JavaScript引擎切換到嚴格模式,這是爲了避免破壞ECMASript3語法而特地選定的語法。 須要注意的一點是將「use strict「腳本文件必需要放在第一行,則整個腳本文件都以」use strict「嚴格模式運行,假如」use strict「不在第一行,則不在運行嚴格模式,在這樣的狀況下,整個腳本都以」正常模式運行「。若是你沒有控制頁面中全部腳本的權力,建議只在須要測試的特定函數中開啓嚴格模式。
如何調用javaScript嚴格模式測試
"嚴格模式"有兩種調用方法,使用於不一樣的場合code
1.針對整個腳本文件 <script> "use strict" console.log("這是嚴格模式") </script> <script> console.log("這是正常模式") </script> 2.針對單個函數 將"use strict"放在函數體的第一行,則整個函數以"嚴格模式"運行。 function strict(){ "use strict"; return "這是嚴格模式。"; } function notStrict() { return "這是正常模式。"; } 3.腳本文件的變通寫法 由於第一種調用方法不利於文件合併,因此更好的作法是,借用第二種方法,將整個腳本文件放在一個當即執行的匿名函數之中。 (function (){ "use strict"; // some code here })();
全局變量顯式聲明ip
在正常模式中,若是一個變量沒有聲明就賦值,默認是全局變量。嚴格模式禁止這種用法,全局變量必須顯式聲明。 "use strict"; v = 1; // 報錯,v未聲明 for(i = 0; i < 2; i++) { // 報錯,i未聲明 } 所以,嚴格模式下,變量都必須先用var命令聲明,而後再使用。