JavaScript中遇到“null instanceof Object ”返回值为false的解释

一、缘起

1、alert(null instanceof Object); 返回值为false。

2、typeof(null) == ‘object’

这是为什么?按我们正常的理解,应该为true才对。

而 null instanceof null会抛出异常:
Uncaught TypeError: Right-hand side of ‘instanceof’ is not an object

二、解释

这是一个历史遗留下来的 feature(特征or bug?),The history of “typeof null”

对于Null类型的值(只有null),typeof null是出了一个bug,就是返回"object"这个字符串。

但是本质上Null和Object不是一个数据类型,null值并不是以Object为原型创建出来的。所以null instanceof Object是false。,null确实是javascript中用来表示空引用的一个特殊值。使得它不是instanceof Ojbect,而typeof null是“object”。在语义上也是可以理解的。

null返回object这个其实是最初JavaScript的实现的一个错误,然后被ECMAScript沿用了,成为了现在的标准,不过我们把null可以理解为尚未存在的对象的占位符,这样就不矛盾了 。虽然这是一种“狡辩”,但这种“语言特性”也算是将错就错吧。语言是人类创造的,正因为有故事才有生命力,对吧。

截取自
https://blog.csdn.net/weixin_42049636/article/details/81565461

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值