经典面试题(4):use strict 有什么意义和好处?
對(duì)于這個(gè)問(wèn)題,你可以這樣回答面試官:use strict 是一種在JavaScript代碼運(yùn)行時(shí)自動(dòng)實(shí)行更嚴(yán)格解析和錯(cuò)誤處理的方法。
嚴(yán)格模式的一些主要優(yōu)點(diǎn)包括:
1.使調(diào)試更加容易。那些被忽略或默默失敗了的代碼錯(cuò)誤,會(huì)產(chǎn)生錯(cuò)誤或拋出異常,因此盡早提醒你代碼中的問(wèn)題,你才能更快地指引到它們的源代碼。
2.防止意外的全局變量。如果沒(méi)有嚴(yán)格模式,將值分配給一個(gè)未聲明的變量會(huì)自動(dòng)創(chuàng)建該名稱的全局變量。這是JavaScript中最常見(jiàn)的錯(cuò)誤之一。在嚴(yán)格模式下,這樣做的話會(huì)拋出錯(cuò)誤。
3.消除?this?強(qiáng)制。如果沒(méi)有嚴(yán)格模式,引用null或未定義的值到?this?值會(huì)自動(dòng)強(qiáng)制到全局變量。這可能會(huì)導(dǎo)致許多令人頭痛的問(wèn)題和讓人恨不得拔自己頭發(fā)的bug。在嚴(yán)格模式下,引用 null或未定義的?this?值會(huì)拋出錯(cuò)誤。
4.不允許重復(fù)的屬性名稱或參數(shù)值。當(dāng)檢測(cè)到對(duì)象中重復(fù)命名的屬性,例如:
var object = {foo: "bar", foo: "baz"};)
或檢測(cè)到函數(shù)中重復(fù)命名的參數(shù)時(shí),例如:
function foo(val1, val2, val1){})
嚴(yán)格模式會(huì)拋出錯(cuò)誤,因此捕捉幾乎可以肯定是代碼中的bug可以避免浪費(fèi)大量的跟蹤時(shí)間。
5.使?eval()?更安全。在嚴(yán)格模式和非嚴(yán)格模式下,?eval()?的行為方式有所不同。最顯而易見(jiàn)的是,在嚴(yán)格模式下,變量和聲明在?eval()?語(yǔ)句內(nèi)部的函數(shù)不會(huì)在包含范圍內(nèi)創(chuàng)建(它們會(huì)在非嚴(yán)格模式下的包含范圍中被創(chuàng)建,這也是一個(gè)常見(jiàn)的問(wèn)題源)。
6.在?delete?使用無(wú)效時(shí)拋出錯(cuò)誤。?delete?操作符(用于從對(duì)象中刪除屬性)不能用在對(duì)象不可配置的屬性上。當(dāng)試圖刪除一個(gè)不可配置的屬性時(shí),非嚴(yán)格代碼將默默地失敗,而嚴(yán)格模式將在這樣的情況下拋出異常。
熱門文章
原創(chuàng)教程原創(chuàng)教程:
附加習(xí)題:
趣味職場(chǎng)職場(chǎng)焦慮:
感到迷茫:
培訓(xùn)出身:
培訓(xùn)費(fèi)用:
搞笑黑話:
職業(yè)自由:
職場(chǎng)形象:
合作推廣分割線
總結(jié)
以上是生活随笔為你收集整理的经典面试题(4):use strict 有什么意义和好处?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 云炬随笔20210722(2)
- 下一篇: 云炬随笔20210722(3)