使用`in`比object.prop有什么好处?

时间:2014-01-09 14:37:58

标签: javascript

我们都看到该功能检测到类似的内容:

var touch = function () {
  return 'ontouchstart' in window;
};

但是我想知道使用in运算符对这样的事情(节省几个字节)是否有任何其他好处?

var touch = function () {
  return !!window.ontouchstart;
};

使用in还有其他好处吗?

1 个答案:

答案 0 :(得分:5)

它们两者完全不同。

当你这样做时

!!window.ontouchstart

您正在检查window.ontouchstart的值是truthy,还是

'ontouchstart' in window

检查ontouchstart对象中是否存在window

使用!!window.ontouchstart来检查成员存在的另一个问题是,即使存在ontouchstart并且它有假值,例如undefinednullfalse0,它仍会返回false。因此,它不应该用于检查成员的存在。