国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript之“use strict”

econi / 3150人閱讀

摘要:在嚴格模式中,當運算符后跟隨非法的標識符比如變量函數(shù)函數(shù)參數(shù)時,將會拋出一個語法錯誤異常在非嚴格模式中,這種表達式什么也沒做,并返回。

JavaScript之“use strict”

“use strict"是ECMAScript 5引入的一條指令。
指令不是語句(但非常接近于語句)。“usestrict"指令和普通的語句之間有兩個重要的區(qū)別:

它不包含任何語言的關鍵字,指令僅僅是一個包含一個特殊字符串直接量的表達式(可以是使用單引號也可以使用雙引號),對于那些沒有實現(xiàn)ECMAScript 5的JavaScript解釋器來說,它只是一條沒有副作用的表達式語句,它什么也沒做。將來的ECMAScript標準希望將use用做關鍵字,這樣就可以省略引號了。

它只能出現(xiàn)在腳本代碼的開始或者函數(shù)體的開始、任何實體語句之前。但它不必一-定出現(xiàn)在腳本的首行或函數(shù)體內的首行,因為“use strict" 指令之后或之前都可能有其他字符串直接量表達式語句,并且JavaScript的具體實現(xiàn)可能將它們解析為解釋器自有的指令。在腳本或者函數(shù)體內第一條常規(guī)語句之后字符串直接量表達式語句只當做普通的表達式語句對待;它們不會當做指令解析,它們也沒有任何副作用。

使用“use strict" 指令的目的是說明(腳本或函數(shù)中)后續(xù)的代碼將會解析為嚴格代碼(strict code)。如果頂層(不在任何函數(shù)內的)代碼使用了“use strict" 指令,那么它們就是嚴格代碼。如果函數(shù)體定義所處的代碼是嚴格代碼或者函數(shù)體使用了“use strict"指令,那么函數(shù)體的代碼也是嚴格代碼。如果eva1()調用時所處的代碼是嚴格代碼或者eval()要執(zhí)行的字符串中使用了“scrict code”指令,則eval()內的代碼是嚴格代碼。

嚴格代碼以嚴格模式執(zhí)行。ECMAScript 5中的嚴格模式是該語言的一個受限制的子集,它修正了語言的重要缺陷,并提供健壯的查錯功能和增強的安全機制。
嚴格模式和非嚴格模式之間的區(qū)別如下(前三條尤為重要) :

在嚴格模式中禁止使用with語句。

在嚴格模式中,所有的變量都要先聲明,如果給一個未聲明的變量、函數(shù)、函數(shù)參數(shù)、catch從句參數(shù)或全局對象的屬性賦值,將會拋出一個引用錯誤異常(在非嚴格模式中,這種隱式聲明的全局變量的方法是給全局對象新添加一一個新屬性)。

在嚴格模式中,調用的函數(shù)(不是方法)中的一個this值是undefined。(在非嚴格模式中,調用的函數(shù)中的this值總是全局對象)。可以利用這種特性來判斷JavaScript實現(xiàn)是否支持嚴格模式:

var hasstrictMode = (function() { "use strict"; return this==undefined}());

同樣,在嚴格模式中,當通過call()或app1y()來調用函數(shù)時,其中的this值就是通過call()或apply()傳入的第一個參數(shù)(在非嚴格模式中,null和undefined值被全局對象和轉換為對象的非對象值所代替)。

在嚴格模式中,給只讀屬性賦值和給不可擴展的對象創(chuàng)建新成員都將拋出-一個類型錯誤異常(在非嚴格模式中,這些操作只是簡單地操作失敗,不會報錯)。

在嚴格模式中,傳人eval()的代碼不能在調用程序所在的上下文中聲明變量或定義函數(shù),而在非嚴格模式中是可以這樣做的。相反,變量和函數(shù)的定義是在eval()創(chuàng)建的新作用域中,這個作用域在eval()返回時就棄用了。

在嚴格模式中,函數(shù)里的arguments對象(見8.3.2節(jié)) 擁有傳入函數(shù)值的靜態(tài)副本。在非嚴格模式中,arguments對象具有 “魔術般”的行為,arguments 里的數(shù)組元素和函數(shù)參數(shù)都是指向同一個值的引用。

在嚴格模式中,當delete運算符后跟隨非法的標識符(比如變量、函數(shù)、函數(shù)參數(shù))時,將會拋出一個語法錯誤異常(在非嚴格模式中,這種delete表達式什么也沒做,并返回false)。

在嚴格模式中,試圖刪除-一個不可配置的屬性將拋出一個類型錯誤異常(在非嚴格模式中,delete表達式操作失敗,并返回false)。

在嚴格模式中,在一個對象直接量中定義兩個或多個同名屬性將產生-一個語法錯誤(在非嚴格模式中不會報錯)。

在嚴格模式中,函數(shù)聲明中存在兩個或多個同名的參數(shù)將產生-一個語法錯誤(在非嚴格模式中不會報錯)。

在嚴格模式中是不允許使用八進制整數(shù)直接量(以0為前綴,而不是0x為前綴)的(在非嚴格模式中某些實現(xiàn)是允許八進制整數(shù)直接量的)。

在嚴格模式中,標識符eval和arguments 當做關鍵字,它們的值是不能更改的。不能給這些標識符賦值,也不能把它們聲明為變量、用做函數(shù)名、用做函數(shù)參數(shù)或用做catch塊的標識符。

在嚴格模式中限制了對調用棧的檢測能力,在嚴格模式的函數(shù)中,arguments.caller和arguments.callee都會拋出一個類型錯誤異常。嚴格模式的函數(shù)同樣具有caller和arguments屬性,當訪問這兩個屬性時將拋出類型錯誤異常(有一些JavaScript的實現(xiàn)在非嚴格模式里定義了這些非標準的屬性)

我是Cloudy,年輕的前端攻城獅一枚,愛專研,愛技術,愛分享。 
個人筆記,整理不易,感謝閱讀、點贊和收藏。
文章有任何問題歡迎大家指出,也歡迎大家一起交流前端各種問題!

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/105222.html

相關文章

  • JS專題嚴格模式

    摘要:整個腳本文件就會以嚴格模式執(zhí)行。函數(shù)作用域范圍將放在函數(shù)體的第一行,則整個函數(shù)以嚴格模式運行。嚴格模式下,必須指明的指向對象。禁止在非函數(shù)代碼塊聲明函數(shù)的嚴格模式只允許在全局作用域或函數(shù)作用域聲明函數(shù)。 ECMAScript 5 引入了 strict mode ,現(xiàn)在已經(jīng)被大多瀏覽器實現(xiàn)(從IE10開始) 一、什么是嚴格模式 顧名思義,JavaScript 嚴格模式就是讓 JS 代碼以...

    baukh789 評論0 收藏0
  • JavaScript嚴格模式介紹與總結

    摘要:嚴格模式的限制不允許使用未聲明的變量報錯未定義報錯未定義不允許刪除變量或對象。返回,因為指向全局對象,就是返回,因為嚴格模式下,的值為,所以為。 嚴格模式優(yōu)勢: 消除Javascript語法的一些不合理、不嚴謹之處,減少一些意外情況出現(xiàn);消除代碼運行的一些不安全之處,保證代碼運行的安全;提高編譯器效率,增加運行速度;注意,同樣的代碼,在嚴格模式中,可能會有不一樣的運行結果;一些在正常模...

    fancyLuo 評論0 收藏0
  • JavaScript】面向對象嚴格模式

    摘要:一嚴格模式概述嚴格模式是什么在中是種限制性更強變種方式,不是個子集,在語義上與正常代碼有明顯得差異嚴格模式和非嚴格模式可共存,可選擇性的加入嚴格模式嚴格模式的目的將把陷阱直接變?yōu)槊黠@錯誤修正一些引擎難以優(yōu)化錯誤,代碼有些時候嚴格模式會比非嚴 JS(JavaScript)一.嚴格模式1.概述 嚴格模式是什么 在JS中是種限制性更強變種方式,不是個子集,在語義上與正常代碼有明顯得差異嚴格模...

    siberiawolf 評論0 收藏0
  • 1.你不知道的JavaScript-嚴格模式

    摘要:針對單個函數(shù)將放在函數(shù)體的第一行,則整個函數(shù)以嚴格模式運行。嚴格模式禁止這種用法,全局變量必須顯式聲明。嚴格模式下,這屬于語法錯誤。嚴格模式禁止這種表示法,整數(shù)第一位為,將報錯。也就是說,不允許在非函數(shù)的代碼塊內聲明函數(shù)。 本文轉自【阮一峰博客】:http://www.ruanyifeng.com/blo... 一、概述 除了正常運行模式,ECMAscript 5添加了第二種運行模式:...

    FuisonDesign 評論0 收藏0

發(fā)表評論

0條評論

econi

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<