typeof something返回对象而不是数组

时间:2016-01-28 07:27:21

标签: javascript jquery

x是一个数组。

我做console.log(x)我得到了

[ 'value' ]

但是当我用类似console.log(typeof x)的类型检查x时,它说它是一个对象。为什么呢?

7 个答案:

答案 0 :(得分:3)

数组是JS中的对象。

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

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

答案 1 :(得分:2)

如果您的目的是检查,“它是否是阵列”?你最好用

Array.isArray()

如果对象是数组,则Array.isArray()方法返回true,否则返回false。 LINK

所以你可以试试

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

更新: 数组是一个对象,因此typeof x报告其对象。但那么为什么地球上typeof function会正确地报告它! ? 好问题在使用typeof

时要小心

答案 2 :(得分:1)

根据MDN,使用typeof时javascript中没有数组类型 只有对象。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof

答案 3 :(得分:0)

Array是一种Object类型,所以很好!

答案 4 :(得分:0)

X是在全局范围内定义的数组。因此,当您执行console.log(x)时,您可以看到

 ['value']

另外,请参阅here,了解有关JavaScript数据类型的详细信息,

数组是常规对象,整数键属性与'length'属性之间存在特定关系

因此,对象的类型返回是正确的并且符合预期。

答案 5 :(得分:0)

没有"#34;阵列"输入javascript

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

其他常用的值类型:

 number,string,undefined,boolean,function

答案 6 :(得分:0)

在我发现数组,null和对象都将全部返回为“对象”之前,typeof运算符使我离开了几次。我把这个快速而肮脏的函数放在一起,现在代替typeof使用它-该函数仍返回一个指示变量类型的字符串:

TestType = (variable) => {
  if(Array.isArray(variable)){
    return 'array'
  }
  else if(variable === null){ //make sure to use the triple equals sign (===) as a double equals sign (==) will also return null if the variable is undefined
    return 'null'
  }else{
    return typeof variable
  }
}