亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

javascript之嚴(yán)格模式

zoomdong / 1903人閱讀

阮一峰的網(wǎng)絡(luò)日志——Javascript嚴(yán)格模式詳解

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

消除javascript語法的一些不合理、不嚴(yán)謹(jǐn)之處,減少一些怪異行為;

消除代碼運(yùn)行的一些不安全之處,保證代碼運(yùn)行的安全;

提高編譯器效率,增加運(yùn)行速度;

為未來版本的JavaScript做好鋪墊

“嚴(yán)格模式”標(biāo)志


(function(){
    "use strict";
    //code here
})();
語法的改變 全局變量顯示聲明
"use strict"
v=1; //報(bào)錯(cuò),v未聲明
for(i=0;i<2;i++){
}//報(bào)錯(cuò),i未聲明
靜態(tài)綁定 禁止使用with語句
"use strict"
var v=1;
with(o){
    v=2;
}//語法錯(cuò)誤
創(chuàng)設(shè)eval作用域

正常模式下,javascript語言有兩種變量作用域(scope):全局作用域和函數(shù)作用域,嚴(yán)格模式創(chuàng)設(shè)了第三種作用域:eval作用域
嚴(yán)格模式下,eval作用域中生成的變量只能用于內(nèi)部

“use strict”;
var x=2;
console.info(eval("var x=5;x")); //5
console.info(x);//2
增強(qiáng)的安全措施 禁止this關(guān)鍵字指向全局對(duì)象
function f(){
    return !this;
}//false

function f(){
    "use strict";
    return !this;
}//true,嚴(yán)格模式下this的值為undefined,!this的值為true

function f(){
    "use strict";
    this.a = 1;
};
f();//報(bào)錯(cuò),this未定義
只能使用new f(),將this的指向明確的對(duì)象
禁止在函數(shù)內(nèi)部遍歷調(diào)用棧
function f1(){
    "use strict";
    f1.caller; //報(bào)錯(cuò)
    f1.arguments;//報(bào)錯(cuò)
}
禁止刪除變量

嚴(yán)格模式下無法刪除變量,只有configurable設(shè)置為true的對(duì)象屬性,才能被刪除

"use strict";
var x;
delete x; //語法錯(cuò)誤
var o = Object.create(null, {
    "x":{value:1,configurable:true}
});
delete o.x; //刪除成功
顯式報(bào)錯(cuò)

正常模式下,對(duì)一個(gè)對(duì)象的只讀屬性進(jìn)行賦值,不會(huì)報(bào)錯(cuò),嚴(yán)格模式會(huì)

"use strict";
var o = {};
Object.defineProperty(o, {value:1, writable:false});
o.v = 2; //報(bào)錯(cuò)

嚴(yán)格模式下,對(duì)一個(gè)使用getter方法讀取的屬性進(jìn)行賦值,會(huì)報(bào)錯(cuò)

"use strict";
var o ={
    get v(){return 1;}
};
o.v = 2; //報(bào)錯(cuò)

嚴(yán)格模式下,對(duì)禁止擴(kuò)展的對(duì)象添加新屬性,會(huì)報(bào)錯(cuò)

"use strict";
var o ={};
Object.preventExtensions(o);
o.v = 2; //報(bào)錯(cuò)        
重名錯(cuò)誤 對(duì)象不能有重名的屬性
"use strict";
var o = {
    p:1,
    p:2
};//語法錯(cuò)誤
函數(shù)不能有重名的參數(shù)
"use strict";
function f(a, a, b) { // 語法錯(cuò)誤
    return ;
}
禁止八進(jìn)制對(duì)法

正常模式下,整數(shù)的第一位如果是0,表示這是八進(jìn)制數(shù),比如0100等于十進(jìn)制的64。嚴(yán)格模式禁止這種表示法,整數(shù)第一位為0,將報(bào)錯(cuò)。

"use strict";
var n = 0100; // 語法錯(cuò)誤
arguments對(duì)象的限制 不允許對(duì)arguments賦值
"use strict";
arguments++;//錯(cuò)誤
var obj = { set p(arguments) { } }; // 語法錯(cuò)誤
try { } catch (arguments) { } // 語法錯(cuò)誤
function arguments() { } // 語法錯(cuò)誤
var f = new Function("arguments", ""use strict"; return 17;"); // 語法錯(cuò)誤    
arguments不再跟蹤參數(shù)的變化
function f(a) {
a = 2;
return [a, arguments[0]];
}
f(1); // 正常模式為[2,2]
function f(a) {
"use strict";
a = 2;
return [a, arguments[0]];
}
f(1); // 嚴(yán)格模式為[2,1]
禁止使用arguments.callee

無法在匿名函數(shù)內(nèi)部調(diào)用自身

"use strict";
var f = function(){ return arguments.callee;};
f(); //報(bào)錯(cuò)
函數(shù)必須聲明在頂層
"use strict";
 if (true) {
   function f() { } // 語法錯(cuò)誤
 }
 for (var i = 0; i < 5; i++) {
     function f2() { } // 語法錯(cuò)誤
 }
保留字

新增的一些保留字:implements, interface, let, package, private, protected, public, static, yield。

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/80633.html

相關(guān)文章

  • JavaScript“use strict”

    摘要:在嚴(yán)格模式中,當(dāng)運(yùn)算符后跟隨非法的標(biāo)識(shí)符比如變量函數(shù)函數(shù)參數(shù)時(shí),將會(huì)拋出一個(gè)語法錯(cuò)誤異常在非嚴(yán)格模式中,這種表達(dá)式什么也沒做,并返回。 JavaScript之use strict use strict是ECMAScript 5引入的一條指令。指令不是語句(但非常接近于語句)。usestrict指令和普通的語句之間有兩個(gè)重要的區(qū)別: 它不包含任何語言的關(guān)鍵字,指令僅僅是一個(gè)包含一個(gè)特殊...

    econi 評(píng)論0 收藏0
  • JavaScript】面向?qū)ο?em>之嚴(yán)格模式

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

    siberiawolf 評(píng)論0 收藏0
  • JS專題嚴(yán)格模式

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

    baukh789 評(píng)論0 收藏0
  • JavaScript 面向?qū)ο?[ 嚴(yán)格模式 ]

    摘要:嚴(yán)格模式描述嚴(yán)格模式可以分別作用在全局作用域中和函數(shù)作用域中嚴(yán)格模式是對(duì)代碼的一種限制方式嚴(yán)格模式可以將不明確顯示的錯(cuò)誤轉(zhuǎn)變成明確顯示嚴(yán)格模式可以修正一些解釋器難以優(yōu)化的錯(cuò)誤嚴(yán)格模式下的變量禁止意外創(chuàng)建變量沒有開啟嚴(yán)格模式時(shí)在調(diào)用該變量時(shí), 嚴(yán)格模式 描述 嚴(yán)格模式可以分別作用在全局作用域中和函數(shù)作用域中 嚴(yán)格模式是對(duì)JavaScript代碼的一種限制方式 嚴(yán)格模式可以將不明確顯...

    zsirfs 評(píng)論0 收藏0
  • javascript嚴(yán)格模式

    摘要:概述的嚴(yán)格模式是中的一種限制性更強(qiáng)的變種方式。嚴(yán)格模式在語義上與正常的有一些不同。首先,嚴(yán)格模式會(huì)將陷阱直接變成明顯的錯(cuò)誤。嚴(yán)格模式禁止刪除聲明變量。 概述 ECMAScript 5的嚴(yán)格模式是JavaScript中的一種限制性更強(qiáng)的變種方式。嚴(yán)格模式不是一個(gè)子集:它在語義上與正常代碼有著明顯的差異。不支持嚴(yán)格模式的瀏覽器與支持嚴(yán)格模式的瀏覽器行為上也不一樣, 所以不要在未經(jīng)嚴(yán)格模式特...

    Chao 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<