W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
嚴格模式開啟檢測和一些其他措施,使JavaScript變成更整潔的語言。推薦使用嚴格模式。為了開啟嚴格模式,只需在JavaScript文件或script標(biāo)簽第一行添加如下語句:
'use strict';
你也可以在每個函數(shù)上選擇性開啟嚴格模式,只需將上面的代碼放在函數(shù)的開頭:
function functionInStrictMode() {
'use strict';
}
下面的兩小節(jié)看下嚴格模式的三大好處。
讓我們看一個例子,嚴格模式給我們明確的錯誤,否則JavaScript總是靜默失?。合旅娴暮瘮?shù) f() 執(zhí)行一些非法操作,它試圖更改所有字符串都有的只讀屬性——length:
function f() {
'abc'.length = 5;
}
當(dāng)你調(diào)用上面的函數(shù),它靜默失敗,賦值操作被簡單忽略。讓我們將 f() 在嚴格模式下運行:
function f_strict() {
'use strict';
'abc'.length = 5;
}
現(xiàn)在瀏覽器報給我們一些錯誤:
> f_strict()
TypeError: Cannot assign to read only property 'length' of abc
在嚴格模式下,不作為方法的函數(shù)中的this值是undefined:
function f_strict() {
'use strict';
return this;
}
console.log(f_strict() === undefined); // true
在非嚴格模式下,this的值是被稱作全局對象(global object)(在瀏覽器里是window):
function f() {
return this;
}
console.log(f() === window); // true
不再自動創(chuàng)建全局變量(No auto-created global variables) 在非嚴格模式下,如果你給不存在的變量賦值,JavaScript會自動創(chuàng)建一個全局變量:
> function f() { foo = 5 }
> f() // 不會報錯
> foo
5
在嚴格模式下,這會產(chǎn)生一個錯誤:
> function f_strict() { 'use strict'; foo2 = 4; }
> f_strict()
ReferenceError: foo2 is not defined
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: