x
是一个数组。
我做console.log(x)
我得到了
[ 'value' ]
但是当我用类似console.log(typeof x)
的类型检查x时,它说它是一个对象。为什么呢?
答案 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
}
}