標籤:rip bsp mil size 未來 模式 使用 設定 mode
簡要:strict 模式(strict mode)是JavaScript在ES5裡面新增的編碼模式,只要一行代碼就可開啟,可謂非常簡單了,而它對於我們的編碼來說到底有什麼不同呢?
一、strict 模式的目的?
1、 消除Javascript文法的一些不合理、不嚴謹之處,減少一些怪異行為;
2、消除代碼啟動並執行一些不安全之處,保證代碼啟動並執行安全;
3、提高編譯器效率,增加運行速度;
4、為未來新版本的Javascript做好鋪墊。
二、使用方法?
只要在合適的位置插入這行代碼就可以了。
"use strict";
1、針對真箇指令檔
<script>
"use strict"; //插入到這個位置,對真箇js檔案有效
console.log(somecode);
</script>
2、針對獨立的函數
function a(){
"use strict"; //插入到這個位置,這對這個函數有效
console.log(somecode)
}
三、strict 模式有哪些文法變化?
1、全域變數必須顯式聲明
"use strict";
a = 1; //這時報錯,因為strict 模式下,不能預設聲明為全域變數了,必須加 var等聲明。
2、靜態繫結,javascript的動態綁定收到了一些限制,如with語句不再允許使用(with語句是在執行時候runtime才綁定屬性、方法到哪個對象)
3、增加eval()範圍
普通模式下:2種,全域範圍、函數範圍;此時的eval的範圍取決於它處於全域範圍下還是函數範圍下;
strict 模式下:3種,全域範圍、函數範圍、eval範圍;
4、this不再指向全域對象
意味著:當使用建構函式的時候,當沒有用new關鍵字,此時的this將不再預設指向全域對面window,而會報錯;
5、禁止在函數內部遍曆調用棧
6、strict 模式下無法刪除變數。只有configurable設定為true的對象屬性,才能被刪除。
7、正常模式下,對一個對象的唯讀屬性進行賦值,不會報錯,只會默默地失敗。strict 模式下,將報錯。
。。。後續更新中
更多:請參考阮一峰老師的部落格http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mode.html
JavaScriptstrict 模式分析