我们都看到该功能检测到类似的内容:
var touch = function () {
return 'ontouchstart' in window;
};
但是我想知道使用in
运算符对这样的事情(节省几个字节)是否有任何其他好处?
var touch = function () {
return !!window.ontouchstart;
};
使用in
还有其他好处吗?
答案 0 :(得分:5)
它们两者完全不同。
当你这样做时
!!window.ontouchstart
您正在检查window.ontouchstart
的值是truthy,还是
'ontouchstart' in window
检查ontouchstart
对象中是否存在window
。
使用!!window.ontouchstart
来检查成员存在的另一个问题是,即使存在ontouchstart
并且它有假值,例如undefined
, null
,false
或0
,它仍会返回false
。因此,它不应该用于检查成员的存在。