为什么判断isWindow需要先排除不是null/undefined呢

在知名的 you-dont-need-jquery 中看到判断当前对象是否是window 的时候使用的方法

function isWindow(obj) {
  return obj !== null && obj !== undefined && obj === obj.window;
}

想问下这里为什么要判断

obj !== null && obj !== undefined

那我如果传基础类型如 number/string 这些如1, 'jack',不是也会在obj === obj.window 的时候报错吗?

为什么不是先判断obj 是否是对象,然后再判断obj === obj.window

阅读 3.1k
3 个回答

那我如果传基础类型如 number/string 这些如1, 'jack',不是也会在obj === obj.window 的时候报错吗?

你有试过吗?并不会报错

null 和 undefined 是没有属性的,(null || undefined)[attribute]是会报错的

对象字面量的字符串以及数字也是有属性的,比如最简单的length
你说的方法也可以,感觉看个人吧

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题