为什么1 [1]评估为在javascript中未定义?
问题描述:
数字1是否隐式转换为空数组?为什么1 [1]评估为在javascript中未定义?
> a = 1[1]
undefined
> console.log(a)
undefined
undefined
答
是数字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))
数字,字符串,布尔和符号具有对象当量。空和未定义不。
'1'是个'Number' – hackerrdave
,因为Number没有属性'1'。 (1)[1]'与[(新数字(1))[1]'相同' – Thomas
与[为什么'0 [0]'语法有效?]( http://stackoverflow.com/questions/29250950/why-is-00-syntactically-valid/29251025#29251025) – jfriend00