JS 嚴格模式

2022-07-18 01:24:16 字數 1109 閱讀 2143

標誌

"use strict";

//老版本瀏覽器會自動忽略

呼叫//整個檔案呼叫

(function())();

//單個函式呼叫

function()

語法 行為

嚴格模式下 ,不宣告的變數賦值的話,會報錯誤

禁止使用with

eval作用域只在內部,不再能夠生成全域性變數了

this關鍵字不再指向全域性

建構函式如果忘記new this也不會指向全域性 ,丟擲錯誤

禁止內部遍歷呼叫棧

function f1()

f1();

無法刪除變數 只有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; // 報錯

嚴格模式下,對禁止擴充套件的物件新增新屬性,會報錯。

嚴格模式下,刪除乙個不可刪除的屬性,會報錯。

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

物件不能有重名的屬性

"use strict";

var o = ; // 語法錯誤

多個重名引數報錯

"use strict";

function f(a, a, b)

禁止八進位制表示法

不允許對arguments賦值

arguments不再追蹤引數的變化

禁止使用arguments.callee

不允許在非函式的**塊內宣告函式

"use strict";

if (true) // 語法錯誤

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

}

js 嚴格模式

基於es3.0和es5.0新增的方法使用的,es3.0和es5.0產生矛盾的地方在嚴格模式下就是採用的es5.0,否則js解析採用es3.0 注意 use strict 要放在邏輯的最頂端 的最頂端,有作用範圍,在函式最頂端就是當前函式採取嚴格模式 嚴格模式 1.不允許用with with可以改變作...

js 嚴格模式

簡單整理一下js嚴格模式下的變化。整理 mdn 部分 測試環境 chrome 76.0.3809.132 use strict mistypedvaraible 17 這一行 就會丟擲 referenceerror。不可以不寫宣告 主流瀏覽器現在實現了嚴格模式。但是不要盲目的依賴它,因為市場上仍然有...

js嚴格模式

es6 的模組自動採用嚴格模式,不管你有沒有在模組頭部加上 use strict 嚴格模式主要有以下限制。變數必須宣告後再使用 函式的引數不能有同名屬性,否則報錯 不能使用with語句 不能對唯讀屬性賦值,否則報錯 不能使用字首0表示八進位制數,否則報錯 不能刪除不可刪除的屬性,否則報錯 不能刪除變...