最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入淺析JS中的嚴(yán)格模式

 更新時間:2018年06月04日 10:20:02   作者:Cynthia-milk  
嚴(yán)格模式就是使JS編碼更加規(guī)范化的模式,消除Javascript語法的一些不合理、不嚴(yán)謹(jǐn)之處,減少一些怪異行為。下面通過代碼相結(jié)合的形式給大家介紹js中的嚴(yán)格模式,感興趣的朋友一起看看吧

什么是嚴(yán)格模式?

使JS編碼更加規(guī)范化的模式,消除Javascript語法的一些不合理、不嚴(yán)謹(jǐn)之處,減少一些怪異行為

怎么使用?

直接添加下面的這句字符串就可以了,這種語法可以向后兼容,如果是不支持嚴(yán)格模式的javascript引擎,就會直接當(dāng)成是一個未賦值的字符串字面量,會直接忽略,支持的引擎就會開啟嚴(yán)格模式

'use strict'

說明:

1.在全局作用域使用的話,那整個js腳本就會開啟這種模式

2.如果是只在函數(shù)內(nèi)部使用的話,那么就只是該函數(shù)內(nèi)部開啟而已

function doSomething(){
 'use strict' 
 // 其他代碼 
}

變量

1. 在嚴(yán)格模式中什么時候創(chuàng)建變量以及怎么創(chuàng)建變量都是有限制的.首先,不允許意外創(chuàng)建全局變量.在非嚴(yán)格模式下是可以像下面這樣創(chuàng)建全局變量,但是嚴(yán)格模式中是不可以的

// 未聲明變量
// 非嚴(yán)格模式:創(chuàng)建全局變量
// 嚴(yán)格模式 :拋出referenceEror錯誤

2.在嚴(yán)格模式下,對變量名也是有限制.特別的,不能使用implements,interface,let,package,private等保留字作為變量名,用這些變量命名的話,都會導(dǎo)出語法錯誤

對象

在嚴(yán)格模式下 操作對象比在非嚴(yán)格模式下更容易導(dǎo)致錯誤,下面幾種情形會導(dǎo)致語法錯誤

1.為只讀屬性賦值會拋出TypeError

2.對不可配置的屬性使用delete 操作符會拋出TypeError

3.對不可擴(kuò)展的對象添加屬性會拋出TypeError

函數(shù)

在嚴(yán)格模式下,要求命名函數(shù)的參數(shù)必須是唯一的

// 重命名參數(shù)的
// 非嚴(yán)格模式:沒有錯誤,只能訪問第二個參數(shù),如果要訪問第一個參數(shù),就必須通過arguments
// 嚴(yán)格模式語法錯誤
function sum(num,num){
  //do something   
}

在嚴(yán)格模式下arguments對象的行為也有所不同.在嚴(yán)格模式下,修改命名參數(shù)的值也會反映到argument對象中,但是在嚴(yán)格模式下這兩個值是完全獨(dú)立的

function showValue(value){
 value = 'foo'
 console.log(value)
 console.log(arguments[0]) // 非嚴(yán)格模式 : 'foo' 嚴(yán)格模式 :'hello'
  
}   
showValu('hello')
                              

 函數(shù)

 在嚴(yán)格模式中,函數(shù)的參數(shù)必須唯一

// 重名的參數(shù)
// 非嚴(yán)格模式中,沒有錯誤,只能訪問第一個參數(shù)
// 嚴(yán)格模式 :拋出錯誤 Uncaught SyntaxError: Duplicate parameter name not allowed in this context
function sum(num,num){
  'use strict'
  // do something 
}

arguments對象

在非嚴(yán)格模式中,修改命名參數(shù)的值也會反應(yīng)到arguments對象中,而嚴(yán)格模式坐下,這兩個值是完全獨(dú)立的

// 修改命名參數(shù)的值
// 非嚴(yán)格模式:修改會反應(yīng)到arguments中
// 嚴(yán)格模式中不會反應(yīng)到arguments中
function sum(num,num2){
  'use strict'
num=3
  console.log(arguments[0],num2)// 嚴(yán)格模式下輸出為1,2 非嚴(yán)格模式下輸出為3,2
}
sum(1,2)

 eval()

 eval函數(shù)最大的變化就是他在包含上下文中不在創(chuàng)建變量或者函數(shù):

// 使用eval函數(shù)創(chuàng)建變量
// 非嚴(yán)格模式中:彈出框彈窗 20
// 嚴(yán)格模式中:調(diào)用alert(x)時報錯
function doSomething(){
  eval('var x=20')
  alert(x)
}

在嚴(yán)格模式中,可以在eval()中聲明變量和函數(shù),但這些邊行或者函數(shù)只能在被求值的特殊作用域中有效,隨后就將被銷毀,下面這段代碼執(zhí)行就是沒問題的

'use strict'
var result=eval('x=1,y=13;x+y')
alert(result)

在這里,eval中聲明了變量x和y,然后將他們加在一起,反悔了他們的和,于是result變量的值就是21,即x+y的結(jié)果,在調(diào)用alert時,盡管x和y已經(jīng)不存在了,result變量的值還是有效的

抑制this

在非嚴(yán)格模式下使用函數(shù)的apply()或則call()方法時,null和undefined值會被轉(zhuǎn)換為全局對象,而在嚴(yán)格模式下,函數(shù)的this值始終是指定的值,無論指定的是什么值:

// 訪問屬性
// 非嚴(yán)格模式:訪問全局實(shí)行
// 嚴(yán)格模式:拋出錯誤,因?yàn)閠his的值是null
var color = "red";
function displayColor() {
 alert(this.color);
}
displayColor(null);

其他變化

在嚴(yán)格模式中with語句被拋棄掉了,在非嚴(yán)格模式中with語句能夠改變解析標(biāo)識符的路徑,但在嚴(yán)格模式下,with語句被簡化掉了,因此,在嚴(yán)格模式下使用with語句是導(dǎo)致語法錯誤

// with語句
// 非嚴(yán)格模式:允許
// 嚴(yán)格模式:拋出語法錯誤
with (location) {
 console.log(href);
}

總結(jié)

以上所述是小編給大家介紹的JS中的嚴(yán)格模式,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Wordpress ThickBox 點(diǎn)擊圖片顯示下一張圖的修改方法

    Wordpress ThickBox 點(diǎn)擊圖片顯示下一張圖的修改方法

    Wordpress自帶的ThickBox特效中,單擊圖片會調(diào)用 tb_remove 以關(guān)閉特效窗口,現(xiàn)將修改其動作為顯示下一張圖。
    2010-12-12
  • javascript控制frame,iframe的src屬性代碼

    javascript控制frame,iframe的src屬性代碼

    原理就是通過獲取當(dāng)前網(wǎng)頁地址欄的信息傳參,然后設(shè)置框架的地址。
    2009-12-12
  • JavaScript數(shù)組去重的幾種方法效率測試

    JavaScript數(shù)組去重的幾種方法效率測試

    JavaScript數(shù)組去重是前端面試酷愛的問題,問題簡單而又能看出程序員對計算機(jī)程序執(zhí)行過程的理解如何。數(shù)組去重的方法有很多,到底哪種是最理想的我不清楚。于是我測試了下數(shù)組去重的效率。測試二十萬個數(shù)據(jù),隨著數(shù)據(jù)越多效率很明顯的就體驗(yàn)了出來。下面來一起看看吧。
    2016-10-10
  • 微信小程序用戶拒絕授權(quán)的處理方法詳解

    微信小程序用戶拒絕授權(quán)的處理方法詳解

    這篇文章主要介紹了微信小程序用戶拒絕授權(quán)的處理方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • js倒計時搶購實(shí)例

    js倒計時搶購實(shí)例

    這篇文章主要介紹了js倒計時簡單實(shí)現(xiàn)方法,方便一些提示重要日期的來臨,本實(shí)例特別適合用于商品倒計時搶購活動,感興趣的小伙伴們可以參考一下
    2015-12-12
  • 不唐突的JavaScript的七條準(zhǔn)則整理收集

    不唐突的JavaScript的七條準(zhǔn)則整理收集

    在開始設(shè)計你的腳本之前,要考慮的第一件事情就是檢查一下你要為其編寫腳本的HTML代碼,看看有什么東西可以幫助你達(dá)到目的。
    2008-10-10
  • JS冒泡事件與事件捕獲實(shí)例詳解

    JS冒泡事件與事件捕獲實(shí)例詳解

    這篇文章主要介紹了JS冒泡事件與事件捕獲,結(jié)合實(shí)例形式分析了javascript冒泡的原理與阻止冒泡的相關(guān)操作技巧,需要的朋友可以參考下
    2016-11-11
  • JS實(shí)現(xiàn)仿百度輸入框自動匹配功能的示例代碼

    JS實(shí)現(xiàn)仿百度輸入框自動匹配功能的示例代碼

    本篇文章主要是對JS實(shí)現(xiàn)仿百度輸入框自動匹配功能的示例代碼進(jìn)行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-02-02
  • javascript實(shí)現(xiàn)樹形菜單的方法

    javascript實(shí)現(xiàn)樹形菜單的方法

    這篇文章主要介紹了javascript實(shí)現(xiàn)樹形菜單的方法,涉及javascript動態(tài)操作頁面元素與節(jié)點(diǎn)屬性的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • 詳解Javacript和AngularJS中的Promises

    詳解Javacript和AngularJS中的Promises

    這篇文章主要介紹了詳解Javacript和AngularJS中的Promises的相關(guān)資料,promise是Javascript異步編程很好的解決方案。,需要的朋友可以參考下
    2016-02-02

最新評論

济南市| 临邑县| 玉屏| 宿松县| 怀远县| 平定县| 桃江县| 安福县| 隆回县| 多伦县| 阜新市| 临清市| 泰和县| 安龙县| 留坝县| 太保市| 墨玉县| 保山市| 佛学| 吴江市| 柳州市| 孟村| 德州市| 潜江市| 台江县| 诸暨市| 洪雅县| 襄汾县| 玉树县| 武功县| 临汾市| 峡江县| 石嘴山市| 滨州市| 无锡市| 达拉特旗| 乐昌市| 安庆市| 阳山县| 偏关县| 丰城市|