js嚴(yán)格模式簡單了解及與非嚴(yán)格模式的區(qū)別

"use strict"
使用"use strict"指令的目的是說明(腳本或函數(shù)中)后續(xù)的代碼將會解析為嚴(yán)格代碼(strict code)。
如果頂層(不在任何函數(shù)體內(nèi))代碼使用了"use strict" 指令融柬,那么他們就是嚴(yán)格代碼死嗦。
如果函數(shù)體定義所處的代碼是嚴(yán)格代碼或者函數(shù)體使用了"use strict"指令,那么函數(shù)體的代碼也是嚴(yán)格代碼粒氧。
嚴(yán)格代碼以嚴(yán)格模式執(zhí)行越除。ECMAScript5中的嚴(yán)格模式是該語言的一個受限制的子集,它修正了語言的重要缺陷外盯,并提供健壯的查錯功能和增強(qiáng)的安全機(jī)制摘盆。
@嚴(yán)格模式和非嚴(yán)格模式之間的區(qū)別如下:
*在嚴(yán)格模式中禁止使用with語句
*在嚴(yán)格模式中,所有的變量都要先聲明门怪,如果給一個未聲明的變量、函數(shù)锅纺、函數(shù)參數(shù)掷空、 catch從句參數(shù)或全局對象的屬性賦值,將會拋出一個引用錯誤異常(在非嚴(yán)格模式中,這種隱式聲明的全局變量的方法是給全局對象新添加一個新屬性)坦弟。
*在嚴(yán)格模式中护锤,調(diào)用的函數(shù)(不是方法)中的一個this值是undefined。(在非嚴(yán)格模式中酿傍, 調(diào)用的函數(shù)中的this值總是全局對象)烙懦。
可以利用這種特性來判斷JavaScript實現(xiàn)是否支持嚴(yán)格模式:
var hasStrictMode = (function(){"use strict";retuen this===undefined}());
*同樣,在嚴(yán)格模式中赤炒,當(dāng)通過call()或apply()來調(diào)用函數(shù)中時氯析,其中this值就是通過call()或apply()傳入的第一個參數(shù)(在非嚴(yán)格模式中,null和undefined值被全局對象和轉(zhuǎn)換為對象的非對象值所替代)
*在嚴(yán)格模式中莺褒,給只讀屬性賦值和給不可擴(kuò)展的對象創(chuàng)建新成員都將拋出一個類型錯誤異常(在非嚴(yán)格模式中,這些操作只是簡單地操作失敗掩缓,不會報錯)。
*在嚴(yán)格模式中遵岩,傳入eval()的代碼不能在調(diào)用程序所在的上下文中聲明變量或定義函數(shù)你辣,而在非嚴(yán)格模式中是可以這樣做的。相反尘执,變量和函數(shù)的定義是在eval()創(chuàng)建的新作用域中舍哄,這個作用域是在eval()返回時就棄用了。
*在嚴(yán)格模式中誊锭,函數(shù)里的arguments對象擁有傳入函數(shù)值的靜態(tài)副本表悬。在非嚴(yán)格模式中,arguments對象具有“魔術(shù)般”的行為炉旷,arguments里的數(shù)組元素和函數(shù)參數(shù)都是指向同一個值的引用签孔。
*在嚴(yán)格模式中,當(dāng)delete運(yùn)算符后跟隨非法的標(biāo)識符(比如變量窘行、函數(shù)饥追、函數(shù)參數(shù))時,將會拋出一個語法錯誤異常(在非嚴(yán)格模式中罐盔,這種delete表達(dá)式什么也沒做但绕,并返回false)。
*在嚴(yán)格模式中惶看,試圖刪除一個不可配置的屬性將拋出一個類型錯誤異常(在非嚴(yán)格模式中捏顺,delete表達(dá)式操作失敗,并返回false)纬黎。
*在嚴(yán)格模式中幅骄,在一個對象直接量中定義兩個或多個同名屬性將產(chǎn)生一個語法錯誤(在非嚴(yán)格模式下不會報錯)
*在嚴(yán)格模式中,函數(shù)聲明中存在兩個或多個同名的參數(shù)將產(chǎn)生一個語法錯誤(在非嚴(yán)格模式中不會報錯)
*在嚴(yán)格模式中是不允許使用八進(jìn)制整數(shù)直接量(以0位前綴本今,而不是0x為前綴)的(在非嚴(yán)格模式中某些實現(xiàn)是允許八進(jìn)制整數(shù)直接量的)
*在嚴(yán)格模式中拆座,標(biāo)識符eval和arguments當(dāng)做關(guān)鍵字主巍,它們的值是不能更改的。不能給這些標(biāo)識符賦值挪凑,也不能把它們聲明為變量孕索、用做函數(shù)名、用做函數(shù)參數(shù)或用做catch快的標(biāo)識符躏碳。
*在嚴(yán)格模式中限制了對調(diào)用棧的檢測能力搞旭,在嚴(yán)格模式的函數(shù)中,arguments.caller和arguments.callee都會拋出一個類型錯誤異常菇绵。嚴(yán)格模式的函數(shù)同樣具有caller和arguments屬性肄渗,當(dāng)訪問這兩個屬性時將拋出類型錯誤異常(有一些JavaScript的實現(xiàn)在非嚴(yán)格模式里定義了這些非標(biāo)準(zhǔn)的屬性)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市脸甘,隨后出現(xiàn)的幾起案子恳啥,更是在濱河造成了極大的恐慌,老刑警劉巖丹诀,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钝的,死亡現(xiàn)場離奇詭異,居然都是意外死亡铆遭,警方通過查閱死者的電腦和手機(jī)硝桩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來枚荣,“玉大人碗脊,你說我怎么就攤上這事¢献保” “怎么了衙伶?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長害碾。 經(jīng)常有香客問我矢劲,道長,這世上最難降的妖魔是什么慌随? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任芬沉,我火速辦了婚禮,結(jié)果婚禮上阁猜,老公的妹妹穿的比我還像新娘丸逸。我一直安慰自己,他們只是感情好剃袍,可當(dāng)我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布黄刚。 她就那樣靜靜地躺著,像睡著了一般民效。 火紅的嫁衣襯著肌膚如雪憔维。 梳的紋絲不亂的頭發(fā)上侍芝,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天,我揣著相機(jī)與錄音埋同,去河邊找鬼皿曲。 笑死榨惰,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的臊恋。 我是一名探鬼主播逆甜,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼虱肄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了交煞?” 一聲冷哼從身側(cè)響起咏窿,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎素征,沒想到半個月后集嵌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡御毅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年根欧,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片端蛆。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡凤粗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出今豆,到底是詐尸還是另有隱情嫌拣,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布呆躲,位于F島的核電站异逐,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏歼秽。R本人自食惡果不足惜应役,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望燥筷。 院中可真熱鬧箩祥,春花似錦、人聲如沸肆氓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谢揪。三九已至蕉陋,卻和暖如春捐凭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背凳鬓。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工茁肠, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人缩举。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓垦梆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親仅孩。 傳聞我的和親對象是個殘疾皇子托猩,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,238評論 0 4
  • 一、概述 除了正常運(yùn)行模式辽慕,ECMAscript 5添加了第二種運(yùn)行模式:"嚴(yán)格模式"(strict mode)京腥。...
    才気莮孒閱讀 194評論 0 1
  • 一、概述 除了正常運(yùn)行模式溅蛉,ECMAscript 5添加了第二種運(yùn)行模式:"嚴(yán)格模式"(strict mode)公浪。...
    Bruce_zhuan閱讀 347評論 0 6
  • 轉(zhuǎn)自:腳本之家 轉(zhuǎn)載 時間:2016-09-24我要評論 在 JavaScript 的嚴(yán)格模式下,對 JavaSc...
    Michael_林閱讀 419評論 1 1
  • 因要重現(xiàn)是不是在無索引的情況下 讀寫量過大導(dǎo)致的數(shù)據(jù)庫假死船侧,需要對數(shù)據(jù)庫做個壓力測試因悲。 工具:Jmeter環(huán)境:m...
    灼灼2015閱讀 599評論 1 2