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

資訊專欄INFORMATION COLUMN

javascript之嚴格模式

zoomdong / 1868人閱讀

阮一峰的網絡日志——Javascript嚴格模式詳解

“嚴格模式”的目的

消除javascript語法的一些不合理、不嚴謹之處,減少一些怪異行為;

消除代碼運行的一些不安全之處,保證代碼運行的安全;

提高編譯器效率,增加運行速度;

為未來版本的JavaScript做好鋪墊

“嚴格模式”標志


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

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

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

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

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

嚴格模式下無法刪除變量,只有configurable設置為true的對象屬性,才能被刪除

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

正常模式下,對一個對象的只讀屬性進行賦值,不會報錯,嚴格模式會

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

嚴格模式下,對一個使用getter方法讀取的屬性進行賦值,會報錯

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

嚴格模式下,對禁止擴展的對象添加新屬性,會報錯

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

正常模式下,整數的第一位如果是0,表示這是八進制數,比如0100等于十進制的64。嚴格模式禁止這種表示法,整數第一位為0,將報錯。

"use strict";
var n = 0100; // 語法錯誤
arguments對象的限制 不允許對arguments賦值
"use strict";
arguments++;//錯誤
var obj = { set p(arguments) { } }; // 語法錯誤
try { } catch (arguments) { } // 語法錯誤
function arguments() { } // 語法錯誤
var f = new Function("arguments", ""use strict"; return 17;"); // 語法錯誤    
arguments不再跟蹤參數的變化
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); // 嚴格模式為[2,1]
禁止使用arguments.callee

無法在匿名函數內部調用自身

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

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

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

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

相關文章

  • JavaScript“use strict”

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

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

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

    siberiawolf 評論0 收藏0
  • JS專題嚴格模式

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

    baukh789 評論0 收藏0
  • JavaScript 面向對象 [ 嚴格模式 ]

    摘要:嚴格模式描述嚴格模式可以分別作用在全局作用域中和函數作用域中嚴格模式是對代碼的一種限制方式嚴格模式可以將不明確顯示的錯誤轉變成明確顯示嚴格模式可以修正一些解釋器難以優化的錯誤嚴格模式下的變量禁止意外創建變量沒有開啟嚴格模式時在調用該變量時, 嚴格模式 描述 嚴格模式可以分別作用在全局作用域中和函數作用域中 嚴格模式是對JavaScript代碼的一種限制方式 嚴格模式可以將不明確顯...

    zsirfs 評論0 收藏0
  • javascript嚴格模式

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

    Chao 評論0 收藏0

發表評論

0條評論

zoomdong

|高級講師

TA的文章

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