首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解JavaScript中的基本数据类型

理解JavaScript中的基本数据类型
EN

Stack Overflow用户
提问于 2013-12-12 15:06:59
回答 1查看 354关注 0票数 2

在javascript中,空==“object”类型为true。但是空instanceOf对象是假的。我对此感到困惑,直到我在“面向网络开发人员的专业JavaScript”中看到,

如果instanceOf与原语值一起使用,它将始终返回FALSE,因为原语不是对象。

如果原始数据类型不是对象,为什么空== "object“类型将为真?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-12 15:08:44

基本上,typeof操作符很古怪。这里是规范中的文档。从该表中,您可以看到操作符是简单定义的,因此typeof null的结果是"object“。

在JavaScript中,null实际上是它自己的一种类型。这是一种特殊的原始类型。

JavaScript原语类型确实是而不是对象。它们有时看起来像对象,因为语言语义(特别是.[ ]操作符的语义)使得原语自动被对应类型的对象“装箱”。对于布尔、数字和字符串原语来说,这是正确的。对于null,没有这样的对应对象类型。

正因为如此,

代码语言:javascript
复制
var len = "some string".length;

工作,即使字符串原语没有“长度”属性。

还有一件事:在对象原型上使用"toString“函数作为typeof操作符的”改进“版本有点常见。

代码语言:javascript
复制
alert( Object.prototype.toString.call( null ) ); // [object Null]

函数返回的字符串并不是最方便处理的事情,但它们确实提供了比typeof更细的粒度。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20547024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档