某个版本Chrome中的undefined

昨天百度新闻的同事让我帮忙排查一下线上问题,最终问题定位到这样一段代码:

if (window.varname === undefined) {
  ...
}

左侧是Chrome,右侧是Firefox
图一

所以不要写这样的代码

if (window.xxxxxx === undefined) {...}

要写成

if (typeof window.xxxxx === "undefined" ) {....}

更新:

这是Chrome早期版本的一个bug。后续版本已经修正。

下面是ES5中Global对象上全局属性的说明:
15.1 The Global Object

undefined、Infinity、NaN都是全局对象的属性,且writable属性为false。

而null、数值都是primitive value。null是Null类型的唯一实例。数值是Number类型的实例

所以

undefined in window === true
null in window === false

Leave a Reply

Your email address will not be published. Required fields are marked *

Scroll to top