【作用】
[1]消除js語法的一些不合理、不嚴謹、不安全問題,減少怪異行為並保證**執行安全
[2]提高編譯器效率,增加執行速度
【使用】
[1]整個指令碼啟用嚴格模式,在頂部執行:"use strict";
[2]在指定函式中執行嚴格模式,在函式體第一行:"use strict"
[3]不支援strict模式的瀏覽器把"use strict"當做乙個字串語句執行,支援strict模式的瀏覽器將開啟strict模式
[4]支援嚴格模式的瀏覽器包括ie10+、firefox4+、safari12+、opera12+、chrome
【規則】
變數[a]不允許意外建立全域性變數
"use strict";[b]不能對變數呼叫delete操作符message = 'hello world!';
"use strict";物件var color = 'red';
delete color;
[a]不能為唯讀屬性賦值
"use strict";[b]不能為不可配置的屬性使用delete操作var person =;
object.defineproperty(person,'name',);
person.name = 'nicholas';
"use strict";函式[a]引數必須唯一var person =;
object.defineproperty(person,'name',);
delete person.name;
"use strict";[b]修改形參不會反映到arguments中function
sun(num,num)
function[c]不允許使用arguments.callee和arguments.callershowvalue(value)
showvalue("hi");
"use strict";function
fn(num)
fn(2);
"use strict";不允許eval()在包含上下文中建立變數或函式function
outer()
function
inner()
outer();
"use strict";function
fn()
fn();
//不允許使用eval和arguments作為識別符號,也不允許讀寫他們的值允許以下操作
var result = eval("var x = 10, y = 11; x+y");
alert(result);
//21
"use strict";不允許this值為null或undefinedvar eval = 10;
var arguments = 20;
"use strict";不允許使用with語句var color = "red";
function
fn()
fn();
"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箭頭函...