2016-01-28 27 views
3

x是一个数组。typeof东西返回对象而不是数组

我做console.log(x)

[ 'value' ] 

,但是当我检查的X型像console.log(typeof x)它说,它是一个对象。为什么?

+0

当你初始化你的 'X'? – Alteyss

+0

因为'数组'是类型'对象 ' – Rayon

+4

可能重复[检查对象是数组吗?](http://stackoverflow.com/questions/4775722/check-if-object-is-array) – hjpotter92

回答

0

数组是一个对象类型,所以它很好!

2

数组是JS对象。

如果你需要测试数组变量:

if (x.constructor === Array) 
    console.log('its an array'); 
+0

好方法测试! – Alteyss

+0

第一次看到这个! – Jennifer

1

,如果你的目的是检查时,“是Array或不”?您更好地使用

Array.isArray() 

的Array.isArray()方法,如果对象是一个数组,如果其为不返回true。 LINK

所以你可以尝试

if(typeof x === 'object' && Array.isArray(x)) { 
    //Its an array 
} 

UPDATE: 数组是一个对象,所以typeof x报告其对象。但为什么地球上typeof function报告正确! ? 好问题使用时请格外小心typeof

0

X是在全局范围内定义的数组。所以,当你这样做的console.log(x),则能够看到

['value'] 

同时,请参阅here有关JavaScript的数据类型,它说的细节,

数组定期对象进行有整数键属性和“长度”属性之间的特定关系

因此,类型返回为对象是正确的并且与预期的一样。

0

没有 “阵列” 式的JavaScript

typeof ['1'];//object 
typeof {};//object 
typeof null;//object 

其他经常使用的值类型:

number,string,undefined,boolean,function 
相关问题