- 最近在看一些框架源代碼的時(shí)候看見(jiàn)好多都在代碼開(kāi)頭用了“use strict”,自己不是很了解,就查閱相關(guān)資料學(xué)習(xí)了一下,做了一下筆記。
-
嚴(yán)格模式就是讓javascript在更嚴(yán)格的條件下運(yùn)行。
-
其目的有以下幾個(gè):
1. 消除javascript語(yǔ)法的不嚴(yán)謹(jǐn)和一些不合理之處,減少一些怪異行為。 2. 消除代碼運(yùn)行的不安全之處,保證代碼的運(yùn)行安全。 3. 提高編譯器的效率,增加編譯速度。 4. 為未來(lái)新版本的javascript做好鋪墊。 -
同樣的代碼在嚴(yán)格模式下可能會(huì)有不一樣的運(yùn)行結(jié)果,一些在正常模式下可以運(yùn)行的代碼語(yǔ)句,在嚴(yán)格模式下可能將不能運(yùn)行,掌握這些內(nèi)容將有助于更細(xì)致深入的了解javascript,提升代碼水平。
-
進(jìn)入標(biāo)志就是 "use strict";老版本那些不支持的瀏覽器會(huì)把他當(dāng)做一串普通的字符串處理。
-
有兩種調(diào)用方法:
1. 針對(duì)整個(gè)腳本文件,放在腳本文件的第一行。 2. 針對(duì)單個(gè)函數(shù),將"use strict"放在函數(shù)體的第一行,則整個(gè)函數(shù)以“嚴(yán)格模式”運(yùn)行。 3. 由于第一種方法不利于文件合并,所以更好的做法是借用第二種方法,將整個(gè)腳本文件放在一個(gè)立即執(zhí)行的匿名函數(shù)當(dāng)中。(function () { "use strict"; // some code here }) -
嚴(yán)格模式對(duì)javascript的語(yǔ)法和行為都做了一些改變:
1. 全局變量要顯示的聲明,否則會(huì)報(bào)錯(cuò);必須先聲明變量然后再使用。 2. 靜態(tài)綁定: a):禁止使用with語(yǔ)句 b):正常模式下javascript語(yǔ)言有兩種作用域(scope),即全局作用域和函數(shù)作用域。嚴(yán)格模式創(chuàng)建了第三種作用域,eval作用域。正常模式下,eval語(yǔ)句的作用域取決于它本身是處在全局作用域還是函數(shù)作用域。嚴(yán)格模式下eval本身就是一個(gè)作用域,不在能夠生成全局變量了,他所生成的變量只能用于自身內(nèi)部。 -
增強(qiáng)的安全措施:
1. 禁止this關(guān)鍵字指向全局對(duì)象。 2. 禁止在函數(shù)內(nèi)部遍歷調(diào)用棧。 ``` function f1(){ " use strict"; f1.caller; //報(bào)錯(cuò) f1.arguments; //報(bào)錯(cuò) } ``` -
禁止刪除變量:嚴(yán)格模式下將不能刪除變量,只有configurable設(shè)置為true的才能刪除。
-
顯式報(bào)錯(cuò)
-
重名錯(cuò)誤:
1. 對(duì)象不能有重名的屬性 2. 函數(shù)不能有重名的函數(shù) -
禁止八進(jìn)制表示法
-
arguments的限制:
1.不允許對(duì)arguments進(jìn)行賦值。 2. 不再追蹤參數(shù)的變化。 3. 禁止使用arguments.callee,無(wú)法在匿名函數(shù)內(nèi)部調(diào)用自身了 -
函數(shù)必須聲明在頂層
-
增加了一些保留字,用這些保留字命名變量將會(huì)報(bào)錯(cuò)
es5嚴(yán)格模式(“use strict”)學(xué)習(xí)筆記
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 轉(zhuǎn)自:腳本之家 轉(zhuǎn)載 時(shí)間:2016-09-24我要評(píng)論 在 JavaScript 的嚴(yán)格模式下,對(duì) JavaSc...
- 一、概述 除了正常運(yùn)行模式,ECMAscript 5添加了第二種運(yùn)行模式:"嚴(yán)格模式"(strict mode)。...
- 一、概述 除了正常運(yùn)行模式,ECMAscript 5添加了第二種運(yùn)行模式:"嚴(yán)格模式"(strict mode)。...
- 一、概述 除了正常運(yùn)行模式,ECMAscript 5添加了第二種運(yùn)行模式:"嚴(yán)格模式"(strict mode)。...
- 嚴(yán)格模式 1、設(shè)立嚴(yán)格模式的目的 消除JavaScript語(yǔ)法的一些不合理、不嚴(yán)謹(jǐn)之處,減少一些怪異行為;(會(huì)將J...