var _={};
_.bullets='1,2,3';
console.log(typeof bullets);
的字符串
console.log(_.bullets);
var bullets=_.bullets.split(',');
console.log(bullets); //REF 1
[“1”,“2”,“3”]
console.log(typeof bullets);
对象
为什么不是阵列?我无法弄清楚我在这里做错了什么
的更新 的
console.log([1,2,3]);
console.log(bullets); //REF 1
[1,2,3]
[“1”,“2”,“3”]
有什么区别(一个是字符串1是数字?)
答案 0 :(得分:3)
typeof
永远不会返回'array'
。对于Array
的实例,它会返回'object'
:
表20 - 运营商结果类型
答案 1 :(得分:2)
使用Array.isArray(a)
或a instanceof Array
。
数组是对象,因此typeof
会返回object
。
答案 2 :(得分:1)
技术上typeof
适合原始类型,而instanceof
适合引用类型。
如果您对某些引用类型( Array,Object )使用typeof
,它将返回"object"
。 Function
是第三个引用类型;它的行为有所不同(typeof
明智),因为它会在"function"
时返回typeof new Function()
。
根据您的示例,您可以在JavaScript中将string
原始类型推断为typeof "blabla" === string
(返回true)。是的,如果你来自传统的强类型语言,如Java或C#,那就好奇了。
答案 3 :(得分:0)
typeof
在提供的数组值时返回'object'。要测试数组,您可以执行以下操作(来自JavaScript the Good Parts):
var is_array = function (value) {
return value &&
typeof value === 'object' &&
typeof value.length === 'number' &&
typeof value.splice === 'function' &&
!(value.propertyIsEnumerable('length'));
};