为什么1 [1]评估为在javascript中未定义?

问题描述:

数字1是否隐式转换为空数组?为什么1 [1]评估为在javascript中未定义?

> a = 1[1] 
undefined 
> console.log(a) 
undefined 
undefined 
+0

'1'是个'Number' – hackerrdave

+0

,因为Number没有属性'1'。 (1)[1]'与[(新数字(1))[1]'相同' – Thomas

+1

与[为什么'0 [0]'语法有效?]( http://stackoverflow.com/questions/29250950/why-is-00-syntactically-valid/29251025#29251025) – jfriend00

是数字1投隐含一个空数组?

号数值是隐式地(并且暂时)转换为数字对象和属性1被该对象上访问。

括号符号您使用([1])不是特定于阵列,每对象属性可以通过托架符号来访问。即以下两个是等效的:obj.foo(点符号)和obj['foo'](括号表示法)。

数量的对象但没有财产1和访问一个不存在的属性返回undefined

var numObj = new Number(1); 
 
console.log(numObj[1]);


的隐式转换发生的每访问一个时间财产原始值,财产是否存在或不是。在以下示例中,原始数值也被隐式转换为一个对象,然后执行它的toFixed方法:

var num = 42; 
 
console.log(num.toFixed(2)); 
 
// or equivalently to your example: 
 
console.log(42['toFixed'](2))

数字,字符串,布尔和符号具有对象当量。空和未定义不。