您好,登錄后才能下訂單哦!
“use strict” 是ES5新增的嚴格模式
有以下用法:
1)變量聲明
變量必須先聲明,再使用;
var a=10;
console.log(a);
2)禁止使用with
var obj={
name:"john";
}
在普通模式下,想要訪問name屬性:
with(obj){
console.log(name);
}
但在嚴格模式下,不能使用with,只能使用下面這種方式:
console.log(obj.name)
3)設立eval作用域
在普通模式下,
eval("var a=10;console.log(a)");
console.log(a); //輸出10,10
但是在嚴格模式下,
eval("var a=10;console.log(a)");
console.log(a); //輸出10 報錯 a is not defined(即eval作用域中的變量外部不能訪問)
4)函數中的this指向問題
在普通模式下:
function foo(){
console.log(this); //輸出window,在普通模式下,默認為window調用foo
}
foo();
在嚴格模式下:
function foo(){
console.log(this); //輸出undefined,要想輸出window,必須寫成window.foo()
}
foo();
5)刪除變量
在普通模式下:
var a=10;
delete a;
console.log(a); //輸出10
在嚴格模式下:
var a=10;
delete a;
console.log(a); //報錯 嚴格模式下不能刪除變量
6)函數參數不能重名
錯誤寫法:
function foo(x,x){
}
7)八進制字面量表示法
嚴格模式下:
var num=017;
console.log(num); //報錯 嚴格模式下不允許使用八進制變量
8)arguments不追蹤參數變化
普通模式下:
function foo(x){
console.log(arguments[0]); //輸出1
x=2;
console.log(arguments[0]); //輸出2
}
foo(1);
在嚴格模式下:
function foo(x){
console.log(arguments[0]); //輸出1
x=2;
console.log(arguments[0]); //輸出1
}
foo(1);
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。