欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

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

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

創(chuàng)新互聯(lián)公司從2013年開(kāi)始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站設(shè)計(jì)制作、網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元蘭坪做網(wǎng)站,已為上家服務(wù),為蘭坪各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220

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

怎么使用?

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

'use strict'

說(shuō)明:

1.在全局作用域使用的話,那整個(gè)js腳本就會(huì)開(kāi)啟這種模式

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

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

變量

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

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

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

對(duì)象

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

1.為只讀屬性賦值會(huì)拋出TypeError

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

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

函數(shù)

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

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

在嚴(yán)格模式下arguments對(duì)象的行為也有所不同.在嚴(yán)格模式下,修改命名參數(shù)的值也會(huì)反映到argument對(duì)象中,但是在嚴(yán)格模式下這兩個(gè)值是完全獨(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)格模式中,沒(méi)有錯(cuò)誤,只能訪問(wèn)第一個(gè)參數(shù)
// 嚴(yán)格模式 :拋出錯(cuò)誤 Uncaught SyntaxError: Duplicate parameter name not allowed in this context
function sum(num,num){
  'use strict'
  // do something 
}

arguments對(duì)象

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

// 修改命名參數(shù)的值
// 非嚴(yán)格模式:修改會(huì)反應(yīng)到arguments中
// 嚴(yán)格模式中不會(huì)反應(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)時(shí)報(bào)錯(cuò)
function doSomething(){
  eval('var x=20')
  alert(x)
}

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

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

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

抑制this

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

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

其他變化

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

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

總結(jié)

以上所述是小編給大家介紹的JS中的嚴(yán)格模式,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)創(chuàng)新互聯(lián)網(wǎng)站的支持!

新聞標(biāo)題:深入淺析JS中的嚴(yán)格模式
轉(zhuǎn)載來(lái)源:http://chinadenli.net/article26/pighjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作Google靜態(tài)網(wǎng)站外貿(mào)建站移動(dòng)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

小程序開(kāi)發(fā)