2016-04-01 271 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'