ES5新特性 嚴格模式

2021-07-31 14:40:41 字數 1546 閱讀 9525

目的

消除語法不合理、不嚴謹

消除執行不安全

提高速度 ?

新版本模組化做鋪墊

語法

"use strict"

//是乙個指令,指示直譯器用更嚴格的方式檢查**

如何呼叫

"use strict"

a = 3

console.log(a) //報錯

b = 4

console.log(b) /

/4 script>

針對單個函式:放在函式體的第一行 限制

全域性變數

屬性和方法在編譯階段就能確定屬於那個物件;有利於編譯效率的提高。

//with

var o =

with (o)

//eval

var code = "var a = 3;console.log(a)"

eval(code)

增強的安全措施

function

f()

f(); // 報錯,this未定義

var f1 = new f();

console.log(f1.a);

function

f()

禁止刪除變數:只有configurable設定為true的物件屬性,才能被刪除

"use strict";

var x;

delete x; // 語法錯誤

var o = object.create(null, });

delete o.x; // 刪除成功

顯性報錯

"use strict";

var o = {};

object.defineproperty(o, "v", );

o.v = 2; // 報錯

"use strict";

var o =

};o.v = 2; // 報錯

"use strict";

var o = {};

object.preventextensions(o);

o.v = 1; // 報錯

"use strict";

delete

object.prototype; // 報錯

重名錯誤:

禁止八進位制表示法:

arguments物件的限制

函式必須生命在頂層

"use strict";

if (true) // 語法錯誤

}for (var i = 0; i < 5; i++) // 語法錯誤

}

保留字

參考**: 阮一峰嚴格模式詳解

ES5 嚴格模式

在es5中可以開啟一種嚴格模式的 形式,開啟方式是 將全域性或者函式的第一條語句定義為 use strict 如果瀏覽器不支援,會將其解析為一條普通語句,沒有任何的 開啟全域性模式後會有一下的一些約束 1.第一次定義變數的時候必須使用var。如 test heihei alert test 該語句在...

es5嚴格模式

es3和es5產生衝突的部分使用es5的方法,否則使用es3 use strict 變數賦值前必須宣告,var a b 2 b沒有定義 區域性this必須被賦值 賦給什麼就是什麼 拒絕重複屬性和引數 arguments.calle 不能被使用 function.caller with 改變作用域鏈 ...

ES5 嚴格模式

歷史 es5 2009年發布 es6 es2015 es7 es2016 在早期規範確立之前js在瀏覽器中執行時,每個瀏覽器都有定義一套自己的套路,這個被稱為混炸模式,或者怪異模式 隨著ecma js 等確立新的規範 故名思意 這種模式使用js在更嚴格的語法條件下執行,為 的執行保駕護航 1 在全域...