我在W3school看到了以下陈述。
我来自初学者java背景,因此javascript中的数据类型和对象类型让我感到困惑。我有几个问题:
typeof null
,我的IDE告诉我它的类型为" object",而不是类型" null",这是我的预期。答案 0 :(得分:1)
typeof
将始终返回基元类型。 ('string','number','object'等)。
对象是基本类型结构,是作为一系列名称 - 值对存储的原始数据类型的无序列表。
Object
是对象基元的构造函数。
var test = {};
console.log(typeof test); // object
console.log(test instanceof object) // false
console.log(test instanceof Object) // true
根据这一点,要检查日期或数组,使用typeof
将返回object
:
typeof []; // object
typeof new Date(); // object
要测试对象实际上是日期还是数组,您可以使用instanceof
:
[] instanceof Array; // true
new Date() instanceof Date; // true
关于typeof null
,根据the MDN,它是ECMAScript中的一个错误,应该为null。该错误详见this answer。 A fix已通过选择加入提出,但遗憾的是,由于代码使用此特定“错误”来测试null
,因此更改被拒绝。
答案 1 :(得分:1)
这是一篇关于Javascript中数据类型的文章,你会发现它很有用: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures
回答你的问题:
对象只是属性的集合:键(字符串,数字,对象......)和值之间的组合:其他对象,函数,字符串,数字,......数组(包含一些自定义内容,如索引)等)和日期是对象。
没有对象和对象这样的东西。
typeof null返回object的原因是因为旧的规范从未更改过。 Why is typeof null “object”?