可以看的網(wǎng)站的瀏覽器有哪些銷售外包公司
"嚴(yán)格模式"(即在JavaScript源文件的開頭包括 "use strict"
;)是一種自愿在運(yùn)行時(shí)對(duì)JavaScript代碼執(zhí)行更嚴(yán)格的解析和錯(cuò)誤處理的方式,同時(shí)也使它更安全。
但是,不使用嚴(yán)格模式本身并不是一個(gè) "錯(cuò)誤",但它的使用越來越受到鼓勵(lì),不使用也越來越被認(rèn)為是不好的形式。
以下是嚴(yán)格模式的一些主要好處:
-
使得調(diào)試更容易。原本會(huì)被忽略或無(wú)感知的代碼錯(cuò)誤,現(xiàn)在會(huì)產(chǎn)生錯(cuò)誤或拋出異常,提醒我們更快地發(fā)現(xiàn)代碼庫(kù)中的JavaScript問題,并引導(dǎo)更快地找到其來源。
-
防止意外的全局變量。在沒有嚴(yán)格模式的情況下,給一個(gè)未聲明的變量賦值會(huì)自動(dòng)創(chuàng)建一個(gè)具有該名稱的全局變量。這是最常見的JavaScript錯(cuò)誤之一。在嚴(yán)格模式下,試圖這樣做會(huì)產(chǎn)生一個(gè)錯(cuò)誤。
-
消除this 強(qiáng)迫性。在沒有嚴(yán)格模式的情況下,對(duì)
null
或undefined
的this
值的引用會(huì)自動(dòng)被強(qiáng)制到全局。在嚴(yán)格模式下,引用null
或undefined
的this
值會(huì)產(chǎn)生錯(cuò)誤。 -
不允許重復(fù)的屬性名或參數(shù)值。嚴(yán)格模式在檢測(cè)到一個(gè)對(duì)象中的重復(fù)命名的屬性(例如,
var object = {foo: "bar", foo: "baz"};
)或一個(gè)函數(shù)的重復(fù)命名的參數(shù)(例如,function foo(val1, val2, val1){}
)時(shí)拋出一個(gè)錯(cuò)誤,從而捕捉到你的代碼中幾乎肯定是一個(gè)錯(cuò)誤,否則你可能會(huì)浪費(fèi)很多時(shí)間去追蹤。 -
使得
eval()
更加安全。eval()
在嚴(yán)格模式和非嚴(yán)格模式下的行為方式有一些不同。最重要的是,在嚴(yán)格模式下,在eval()
語(yǔ)句中聲明的變量和函數(shù)不會(huì)在包含的范圍內(nèi)創(chuàng)建。(在非嚴(yán)格模式下,它們是在包含域中創(chuàng)建的,這也可能是JavaScript問題的一個(gè)常見來源)。 -
在無(wú)效使用
delete的
情況下拋出錯(cuò)誤。delete
操作符(用于從對(duì)象中刪除屬性)不能用于對(duì)象的非可配置屬性。當(dāng)試圖刪除一個(gè)不可配置的屬性時(shí),非嚴(yán)格的代碼將無(wú)聲地失敗,而嚴(yán)格模式在這種情況下將拋出一個(gè)錯(cuò)誤。
代碼部署后可能存在的BUG沒法實(shí)時(shí)知道,事后為了解決這些BUG,花了大量的時(shí)間進(jìn)行l(wèi)og 調(diào)試,這邊順便給大家推薦一個(gè)好用的BUG監(jiān)控工具 Fundebug。
來源:www.toptal.com/javascript/…