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

資訊專欄INFORMATION COLUMN

嚴(yán)格模式的簡單認(rèn)識

learning / 1957人閱讀

摘要:不支持嚴(yán)格模式的瀏覽器與嚴(yán)格模式的瀏覽器行為也不一樣,所以不要在未經(jīng)嚴(yán)格模式特性測試情況下使用嚴(yán)格模式。在嚴(yán)格模式下,使用上述標(biāo)識符作為變量名會導(dǎo)致語法錯誤。嚴(yán)格模式下,命名參數(shù)與對象是完全獨(dú)立的。在嚴(yán)格模式下,函數(shù)的值始終是指定的值。

嚴(yán)格模式 概述

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

嚴(yán)格模式是JavaScript中的一種限制性更強(qiáng)的變種模式。嚴(yán)格模式不是一個(gè)子集:它的語義上與正常代碼有著明顯的差異。
不支持嚴(yán)格模式的瀏覽器與嚴(yán)格模式的瀏覽器行為也不一樣,所以不要在未經(jīng)嚴(yán)格模式特性測試情況下使用嚴(yán)格模式。
嚴(yán)格模式可以與非嚴(yán)格模式共存,所以腳本可以逐漸的選擇性加入嚴(yán)格模式。

嚴(yán)格模式的目的

首先,嚴(yán)格模式會將JavaScript陷阱直接變成明顯的錯誤。
其次,嚴(yán)格模式修正了一些引擎難以優(yōu)化的錯誤:同樣的代碼有些時(shí)候嚴(yán)格模式會比非嚴(yán)格模式下更快。
第三,嚴(yán)格模式禁用了一些有可能在未來版本中定義語法。

開啟嚴(yán)格模式

全局開啟嚴(yán)格模式

在JavaScript中想要開啟嚴(yán)格模式,需要在所有代碼之前,定義一個(gè)不會賦給任何變量的字符串:
"use strict";//或者‘use strict’ ;
如果之前的JavaScript代碼是非嚴(yán)格模式的話,建議不要盲目為這段代碼開啟嚴(yán)格模式,這樣可能會出現(xiàn)問題。建議按一個(gè)個(gè)函數(shù)去開啟嚴(yán)格模式。

函數(shù)開啟嚴(yán)格模式

也可以為某個(gè)指定的函數(shù)開啟嚴(yán)格模式,如下代碼示例:
//函數(shù)外依舊是非嚴(yán)格模式
function doSomething(){
‘user strict’};開啟嚴(yán)格模式
//其他代碼
}
在匿名函數(shù)中使用嚴(yán)格模式,相當(dāng)于在全局開啟嚴(yán)格模式的變通實(shí)現(xiàn)方式。
(function(){
"use strict"};//開啟嚴(yán)格模式
})();

變量

禁止意外創(chuàng)建嚴(yán)格變量

在嚴(yán)格模式下,不允許意外創(chuàng)建全局變量。
如下代碼是非嚴(yán)格模式下意外創(chuàng)建的全局變量。
//message="this is message";
如下代碼是嚴(yán)格模式下意外創(chuàng)建全局變量。
"use strict";//開啟嚴(yán)格模式
//嚴(yán)格模式下,意外創(chuàng)建全局變量,拋出ReferenceError
message = "this is message";

靜默失敗轉(zhuǎn)為異常

所謂靜默失敗就是既不報(bào)錯也沒有任何效果,例如改變常量的值。在嚴(yán)格模式下,靜默失敗會轉(zhuǎn)換成拋出異常。
如下代碼是非嚴(yán)格模式下的靜默失敗。
const PI= 3.14;
PI =1.14;//靜默失敗
console.log (PI);//3.14
如下代碼是嚴(yán)格模式下的靜默失敗。
"use strict";//開啟嚴(yán)格模式
const PI=3.14;
PI=1.14;//拋出Type Error錯誤

禁用delete 關(guān)鍵字

在嚴(yán)格模式下,不能對變量使用delete運(yùn)算符。
如下代碼是非嚴(yán)格模式下使用delete運(yùn)算符,結(jié)果會靜默失敗。
var =color = "red";
delete color ;
如下代碼是嚴(yán)格模式下使用delete運(yùn)算符,結(jié)果會拋出異常。
"use strict";//開啟嚴(yán)格模式
var =color ="red";
delete color ;//拋出ReferenceError錯誤
對變量名的限制
在嚴(yán)格模式下,JavaScript對變量名也是有限制。特別不能使用如下內(nèi)容作為變量名:
implements,interface ,let ,package,private ,protected ,public , static,
yield。
上述內(nèi)容都是保留字 在ECMAScript的下一個(gè)版本中可能會用到他們。在嚴(yán)格模式下,使用上述標(biāo)識符作為變量名會導(dǎo)致語法錯誤。

對象

不可刪除的屬性

在嚴(yán)格模式下,不能使用delete運(yùn)算符刪除不可刪除的屬性。
如下代碼是嚴(yán)格模式下使用delete運(yùn)算符刪除不可刪除的屬性,結(jié)果會靜默失敗。
delete Objcet.prototype;
如下代碼是嚴(yán)格模式下使用delete元素安撫刪除不可刪除的屬性,結(jié)果會拋出異常。
"use strict";//開啟嚴(yán)格模式

delete Object.prototype;//拋出TypeError錯誤

屬性名必須唯一

在嚴(yán)格模式下,一個(gè)對象內(nèi)的所有屬性名在對象內(nèi)必須唯一。
如下代碼是在非嚴(yán)格模式下重名屬性是允許的,最后一個(gè)屬性決定屬性值
var 0 ={ p:1 ,p:2};
如下代碼是嚴(yán)格模式下重命屬性被認(rèn)為是錯誤語法。
"use strict ";開啟嚴(yán)格模式。
var 0= {p:1,p:2};//報(bào)錯

只讀屬性賦值 在嚴(yán)格模式下,不能為一個(gè)只讀屬性進(jìn)行重新賦值

如下代碼是在開啟嚴(yán)格模式下為只讀屬性重新賦值,結(jié)果會拋出異常 。
"use strict";開啟嚴(yán)格模式
var obj1={};
Object.defoneProperty(OBJ1,‘x’),{value 42,writable:false});obj1.x=9;//將屬性設(shè)置為只讀

不可擴(kuò)展的對象

在嚴(yán)格模式下不能為不可擴(kuò)展的對象添加新屬性。
"use strict";開啟嚴(yán)格模式
var obj={}
Object.preventExtensions(obj);//將對象變得不可擴(kuò)展
obj.newprop ="ohai";//拋出typeError錯誤
結(jié)果會出現(xiàn)異常

函數(shù)

參數(shù)名必須唯一

在嚴(yán)格模式下,要求命名函數(shù)的參數(shù)必須唯一。
function sum(a,a,b){
//語法錯誤
"use strict";
return a+a+c;//代碼運(yùn)行到這里會報(bào)錯
}

arguments的不同

在嚴(yán)格模式下,arguments對象的行為也有所不用。
嚴(yán)格模式下,修改命名參數(shù)的值也會反應(yīng)到argument對象中。
嚴(yán)格模式下,命名參數(shù)與arguments對象是完全獨(dú)立的。
function showValue(value){
value ="foo";
console.log(value);//foo
console.log(arguments[0]);//在嚴(yán)格模式下foo
//在非嚴(yán)格模式下hello
}
showValue ("hello");
arguments.callee()
在嚴(yán)格模式下,不能使用arugments 對象的callee()方法。
在嚴(yán)格模式下使用arguments對象的callee()方法,結(jié)果會拋出異常。
"use strict";//開啟嚴(yán)格模式
var f =function(){
return arguments.callee;};
f();//拋出TypeError錯誤
函數(shù)聲明的限制
在嚴(yán)格模式下,只能在全局和函數(shù)域中聲明函數(shù)
如下代碼是嚴(yán)格模式下在出全局域和函數(shù)域中聲明函數(shù)是錯誤語法
"use strict";//開啟嚴(yán)格模式
if(true){
function f(){}//錯誤語法
}

eval(函數(shù))

增加eval作用域

在嚴(yán)格模式下,使用eval()函數(shù)創(chuàng)建的變量只能在eval()函數(shù)內(nèi)部使用。
如下代碼是嚴(yán)格下eval()函數(shù)創(chuàng)建的變量只能在eval()函數(shù)內(nèi)部使用
"use strict";開啟嚴(yán)格模式
eval("var x =412");
console.log(x);//拋出RefeienceError錯誤

arguments對象

禁止讀寫

在嚴(yán)格模式下,以下的所有嘗試導(dǎo)致語法錯誤:
"use strict";開啟嚴(yán)格模式
eval=17 ;
arguments++;
++eval;
var obj ={set p (arguments){}};
var eval;
try {}catch(arguments){}
function x(eval){}
function arguments(){}
var y =function eval(){}
var f =new Function("arguments","use strict","return 17");

this 關(guān)鍵字

抑制關(guān)鍵字

在嚴(yán)格模式下使用函數(shù)的apply()call()方法是,NULL或undefind值會被轉(zhuǎn)換為全局對象。
在嚴(yán)格模式下,函數(shù)的this值始終是指定的值。
var color ="red";
function sayColor(){
console.log(this.color)}//非嚴(yán)格模式下red
//嚴(yán)格模式下 拋出錯誤
}
say Color.call(null);

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

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/97075.html

相關(guān)文章

  • 第一天 重新認(rèn)識JavaScript

    摘要:使用表明你的比較不會涉及任何的隱形的類型轉(zhuǎn)換。當(dāng)對不同類型的數(shù)據(jù)進(jìn)行比較的時(shí)候你要首先把它們進(jìn)行顯示的類型轉(zhuǎn)換。然后再進(jìn)行比較這樣會使你的程序更加清晰。 1、JavaScript 嚴(yán)格模式 通過在程序最開始假如一個(gè)字符串字面量 use strict ,即可開啟嚴(yán)格模式 嚴(yán)格模式可以讓JS代碼擁有更好的兼容性,更強(qiáng)的健壯性 在嚴(yán)格模式下,重新聲明 arguments 會報(bào)錯,非嚴(yán)格模式...

    fizz 評論0 收藏0
  • 【進(jìn)階3-2期】JavaScript深入之重新認(rèn)識箭頭函數(shù)this

    摘要:箭頭函數(shù)的尋值行為與普通變量相同,在作用域中逐級尋找。題目這次通過構(gòu)造函數(shù)來創(chuàng)建一個(gè)對象,并執(zhí)行相同的個(gè)方法。 我們知道this綁定規(guī)則一共有5種情況: 1、默認(rèn)綁定(嚴(yán)格/非嚴(yán)格模式) 2、隱式綁定 3、顯式綁定 4、new綁定 5、箭頭函數(shù)綁定 其實(shí)大部分情況下可以用一句話來概括,this總是指向調(diào)用該函數(shù)的對象。 但是對于箭頭函數(shù)并不是這樣,是根據(jù)外層(函數(shù)或者全局)作用域(...

    Rainie 評論0 收藏0
  • 面試官問:能否模擬實(shí)現(xiàn)JScall和apply方法

    摘要:之前寫過兩篇面試官問能否模擬實(shí)現(xiàn)的操作符和面試官問能否模擬實(shí)現(xiàn)的方法其中模擬方法時(shí)是使用的和修改指向。但面試官可能問能否不用和來實(shí)現(xiàn)呢。使用模擬實(shí)現(xiàn)的瀏覽器環(huán)境非嚴(yán)格模式方法的屬性是。 之前寫過兩篇《面試官問:能否模擬實(shí)現(xiàn)JS的new操作符》和《面試官問:能否模擬實(shí)現(xiàn)JS的bind方法》 其中模擬bind方法時(shí)是使用的call和apply修改this指向。但面試官可能問:能否不用cal...

    wuyangnju 評論0 收藏0
  • JavaScript 中 this 指向問題

    摘要:首發(fā)個(gè)人博客中的,大家都用過。箭頭函數(shù),詞法作用域中的簡單的說,箭頭函數(shù)中的,會綁定到函數(shù)外也就是上一層作用域中的,函數(shù)外的指向哪,箭頭函數(shù)中的就指向哪。 首發(fā)個(gè)人博客 JavaScript 中的 this ,大家都用過。但是它到底指向哪里呢?今天在閱讀 《你不知道的JavaScript (上卷)》再結(jié)合自己平時(shí)看的博客,對它又有了新的認(rèn)識,在此來做個(gè)小結(jié),再碰到 this ,就再也不...

    DTeam 評論0 收藏0
  • 關(guān)于javascript中this指向

    摘要:關(guān)于中的指向我上的菜鳥倉庫地址點(diǎn)擊跳轉(zhuǎn)查看其他相關(guān)文章文章在我的博客上的地址點(diǎn)擊跳轉(zhuǎn)學(xué)習(xí),必不可少的肯定要理解的指向。 關(guān)于javascript中this的指向 我GitHub上的菜鳥倉庫地址: 點(diǎn)擊跳轉(zhuǎn)查看其他相關(guān)文章 文章在我的博客上的地址: 點(diǎn)擊跳轉(zhuǎn) ? ? ? ? 學(xué)習(xí)javascript,必不可少的肯定要理解this的指向。要學(xué)習(xí)this指向之前,就要先理解了我前面寫的幾...

    shinezejian 評論0 收藏0

發(fā)表評論

0條評論

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