12月01, 2011

某个版本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

本文链接:http://aztack.wang/post/undefined-in-chrome-ver-xxx.html

-- EOF--

Comments

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。