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