数字1是否隐式地转换为空数组?
> a = 1[1]
undefined
> console.log(a)
undefined
undefined
答案 0 :(得分:4)
数字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))
Numbers,Strings,Booleans和Symbols具有对象等价物。 Null和Undefined不会。