今天看到compareDocumentPosition()方法
在判断节点之间关系时用了return !!(p.compareDocumentPosition(c) & 16);
这儿!!表示什么?????

解决方案 »

  1.   

    非非return !!(p.compareDocumentPosition(c) & 16);
    等同于
    return p.compareDocumentPosition(c) & 16!=0;
      

  2.   

    强制将(p.compareDocumentPosition(c) & 16)转换为boolean类型。
    原因:!(p.compareDocumentPosition(c) & 16)这样在后台会先自动将(p.compareDocumentPosition(c) & 16)的值转换为boolean类型并取反,再加上一个“!”,就是再次将其值取反,也就是(p.compareDocumentPosition(c) & 16)的布尔值。
      

  3.   

    !! 取反再取反把一个对象转换成bool 型当对象的值是:0 "" null "0" 时返回 false
      

  4.   

    谢了,看来java中的语法和javascript中的语法差别还是挺大的