使用双重否定-为什么?
Using double negation - For what reason?
本文关键字:为什么 更新时间:2023-09-26
昨天我读了John Resig的一篇博文:http://ejohn.org/blog/comparing-document-position/
这个片段我看不懂:
function contains(a, b){
return a.contains ?
a != b && a.contains(b) :
!!(a.compareDocumentPosition(b) & 16);
}
第一个表达式很清楚:如果a与b不相同,并且b包含在a中,则返回true。但是第二个表达中两次否定的目的是什么呢?compareDocumentPosition()的返回值按位与16比较。=>结果为16或0。假设它是16,那么在第一个否定之后它就变成假了。然后在第二个否定之后再次为真。在0的情况下,它变为真,然后又变为假。
有人能理解代码并解释它吗?
双反运算符用于转换为布尔值。可以把它看作与parseInt()
这是一个相关的stackoverflow问题
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 为什么“;未定义的“;在JavaScript中结束循环
- 为什么这在IE中的工作方式与在Firefox中不同
- 知道为什么我的旋转木马不会自动更改图片吗
- 为什么会出现错误;未捕获的类型错误:undefined不是函数;
- 为什么在单独的函数中应用时转换会闪烁/断断续续(D3)
- 为什么在变形之前不缺少Fx
- 为什么JavaScript在for循环为3时向所有4发出警报
- 为什么不是't窗口.恢复正常工作吗?(javascript/jquery)
- 为什么Airbnb风格指南说不鼓励依赖函数名称推断
- 为什么要使用0>javascript中的0
- 为什么无法在TypeScript中导出类实例
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- 为什么我的d3.jsselectAll+过滤器没有过滤
- 为什么HTML5拖放的目标是孩子?(可排序列表)
- 为什么忽略了eval()代码中的语法错误
- 为什么在画布上画线;t出现
- 为什么js事件消失了
- 为什么元素的宽度在页面加载之后和那一刻之后不同
- 为什么不'在JQuery中找到第二个css选择器的工作