2016-04-01 238 views
0

我發現我可以訪問數字類型的任意屬性不(至少在鉻)產生誤差:存取未定義屬性

123[1] //undefined 

我必須確定數組的當前項是另一個陣列或一個數字,這會派上用場。這種行爲在所有JS引擎中都是可靠的,還是有可能會在某處產生錯誤?

+2

您可以訪問Javascript中任何對象的不存在的屬性。 – Barmar

+1

應該可以工作,它基本上與'123 ['0']'或'(123).someNonExistentProperty'相同。如果該值爲'null'或'undefined',它將不起作用。 –

+1

等一段時間你必須編輯這段代碼,你會得到「我在這裏想要的」wtf的感覺。讓你的代碼可讀,不要依賴副作用或黑客... – Pevara

回答

2

我必須確定一個數組的當前項目是另一個數組或數...

,你不能使用!isNaN(value) || Array.isArray(value)

這會派上用場。

我真的不認爲會這樣。

這種行爲在所有的JS引擎可靠...

是的,it's defined in the Property Accessors part of the ECMAScript spec

或者是否有可能會在某處產生錯誤?

只要值不是nullundefined可以使用[]語法對象的訪問屬性。這是常見的,從號碼的通話功能,但帶有小數點它看起來怪異:

100..toString() //'100'