學習有關typeof
關鍵字,需要一些澄清:行爲typeof關鍵字
雖然疑難解答我輸出此代碼到控制檯:
console.log(typeof object.prop[someNum - 1]);
(在這種情況下sumNum === 0
)
的控制檯打印出undefined
,這是我所期望的,因爲prop[]
數組中的索引位置[someNum - 1]
不存在(所以我認爲)。 然而,當我做這樣的事情:
if(typeof object.prop[someNum - 1])
//some code
else
//other code
它評估爲真,並運行//some code
,但是當我這樣做:
if(object.prop[someNum - 1])
//some code
else
//other code
它評估爲假,並運行//other code
。
我的印象是undefined
被認爲是falsy value
,並且會在if statement
中評估爲false。爲什麼if(typeof object.prop[someNum - 1])
聲明評估爲真?也有人可以指出我正確的方向,我可以在js
中瞭解更多關於負向索引數組的信息嗎?它們處理的是多種語言,例如c#, c++, java, & php
。我認爲當評估一個負數array
索引號時,它會是underfined
或拋出一個錯誤。
'undefined'與''undefined''不一樣。 – SLaks
由於您正在學習'typeof'關鍵字,因此您可以在其中找到[MDN文檔](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof)案件)。 –
如果你正在檢查財產的存在,你並不需要'typeof'。你可以在object.prop中執行'(someNum-1),或者如果你擔心繼承的屬性,'object.prop.hasOwnProperty(someNum-1)'。使用'typeof'不會區別存在於'未定義'值的屬性和不存在的屬性。 – 2016-04-14 22:57:13