在Bird修前人的bug时候发现了这一个bug的根源:

先提问,hasTouch会返回什么东西呢?
.
.
.
.
.
. .
.
.
我在调试的时候发现无论什么时候, hasTouch返回的都是true.
接下来分析两个问题:
- 为什么永远返回的都是true
- 如何检测是否有touch事件
为什么返回的永远是true
我打印window之后发现:

接下来写个代码片段
var a = {
aaa:undefined,
bbb: null
}
// a.aaa
//a.bbb
//['aaa'] in a
//['bbb'] in b
代码运行图:

所以我们发现一个道理
[key] in obj 只能检测这个对象里是否有这个key的值, 而无法判断该值是否有效
那么如何检测是否有touch事件呢
其他办法没试过,一直用的是正则来判断

题外话:
这个项目以前是个高工写的. 如此低级的错误我想不应该会犯的, 同时,我在网上搜如何判断是否有touch事件的时候 给的方案也都类似于源码中的那种. 比如:

网友评论