達(dá)令說
2019-07-13 18:46:24
我們經(jīng)常在JavaScript代碼中使用以下代碼模式if (typeof(some_variable) != 'undefined' && some_variable != null){
// Do something with some_variable}有沒有一種不那么冗長的檢查方法,具有同樣的效果?根據(jù)一些論壇和文獻(xiàn),簡單地說,以下幾點(diǎn)應(yīng)該有同樣的效果。if (some_variable){
// Do something with some_variable}不幸的是,火蟲在運(yùn)行時(shí)將此類語句計(jì)算為錯(cuò)誤。some_variable是個(gè)未知數(shù),而第一個(gè)就沒問題了。這僅僅是Firebug(不想要的)行為,還是這兩種方式之間真的有一些不同?
3 回答

白豬掌柜的
TA貢獻(xiàn)1893條經(jīng)驗(yàn) 獲得超10個(gè)贊
變量可以是 undefined
或 未申報(bào)
..如果在其他上下文中訪問未聲明的變量,則會(huì)得到錯(cuò)誤 typeof
.
if(typeof someUndeclaredVar == whatever) // worksif(someUndeclaredVar) // throws error
undefined
.
let foo;if (foo) //evaluates to false because foo === undefined
未定 特性,就像 someExistingObj.someUndefProperty
..未定義的屬性不會(huì)產(chǎn)生錯(cuò)誤,只會(huì)返回 undefined
,當(dāng)轉(zhuǎn)換為布爾值時(shí),計(jì)算結(jié)果為 false
..所以,如果你不關(guān)心 0
和 false
,使用 if(obj.undefProp)
都沒問題?;谶@一事實(shí),有一個(gè)常見的成語: value = obj.prop || defaultValue
意思是“如果 obj
擁有財(cái)產(chǎn) prop
,分配給 value
,否則將分配默認(rèn)值。 defautValue
".有些人認(rèn)為這種行為令人困惑,認(rèn)為它會(huì)導(dǎo)致難以發(fā)現(xiàn)的錯(cuò)誤,并建議使用 in
運(yùn)算符 value = ('prop' in obj) ? obj.prop : defaultValue
添加回答
舉報(bào)
0/150
提交
取消