javascript嚴格模式下的8點規則

2021-07-31 11:51:49 字數 1936 閱讀 1446

【作用】

[1]消除js語法的一些不合理、不嚴謹、不安全問題,減少怪異行為並保證**執行安全

[2]提高編譯器效率,增加執行速度

【使用】

[1]整個指令碼啟用嚴格模式,在頂部執行:"use strict";

[2]在指定函式中執行嚴格模式,在函式體第一行:"use strict"

[3]不支援strict模式的瀏覽器把"use strict"當做乙個字串語句執行,支援strict模式的瀏覽器將開啟strict模式

[4]支援嚴格模式的瀏覽器包括ie10+、firefox4+、safari12+、opera12+、chrome

【規則】

變數[a]不允許意外建立全域性變數

"use strict";

message = 'hello world!';

[b]不能對變數呼叫delete操作符

"use strict";

var color = 'red';

delete color;

物件

[a]不能為唯讀屬性賦值

"use strict";

var person =;

object.defineproperty(person,'name',);

person.name = 'nicholas';

[b]不能為不可配置的屬性使用delete操作

"use strict";

var person =;

object.defineproperty(person,'name',);

delete person.name;

函式[a]引數必須唯一

"use strict";

function

sun(num,num)

[b]修改形參不會反映到arguments中

function

showvalue(value)

showvalue("hi");

[c]不允許使用arguments.callee和arguments.caller

"use strict";

function

fn(num)

fn(2);

"use strict";

function

outer()

function

inner()

outer();

不允許eval()在包含上下文中建立變數或函式

"use strict";

function

fn()

fn();

//

允許以下操作

var result = eval("var x = 10, y = 11; x+y");

alert(result);

//21

不允許使用eval和arguments作為識別符號,也不允許讀寫他們的值

"use strict";

var eval = 10;

var arguments = 20;

不允許this值為null或undefined

"use strict";

var color = "red";

function

fn()

fn();

不允許使用with語句

"use strict";

with

(location)

不允許使用八進位制字面量

"use strict";

var value = 010;

JavaScript嚴格模式與非嚴格模式之間的區別

嚴格模式 非嚴格模式 禁止使用with語句 允許使用with語句 所有變數要先宣告 使用未宣告的變數將隱式宣告為全域性變數 函式 非方法 中的this是undefinedthis是全域性物件 給唯讀屬性和不可擴充套件的物件建立新成員將丟擲型別錯誤異常 只是簡單的操作失敗 傳入eval 的 不能在定義...

深入淺出Javascript 嚴格模式

在js檔案或是函式的頂部 前無語句,可有注釋 新增 use strict 即可啟用嚴格模式。全域性開啟嚴格模式 use strict 函式內部開啟嚴格模式 function asd for i 0 i 5 i 新手常犯錯誤 use strict 給不可寫屬性賦值 var obj1 object.de...

js嚴格模式下的this指向

一 全域性作用域中的this es5,6,不管是嚴格模式函式不是嚴格模式this都指向window use strict console.log this window 二 全域性作用域中函式中的thises5,非嚴格模式this指向window,嚴格模式this指向undefined es6箭頭函...