javascript 里的两个感叹号是什么意思?

来源:百度知道 编辑:UC知道 时间:2024/05/29 05:37:49
var Contains = function(a, b){
return a.contains ? a != b && a.contains(b) : !!(a.compareDocumentPosition(b) & 16);
}

不明白Javascript 里两个感叹号运算符是什么意思,能详细说明一下吗!
重点想知道: !!既然跟没有感叹号的效果一样. 那为什么还需要用它呢?

还有那里有一个单&号,这个表示什么意思呢?

<script>
alert(!!0>1)
</script>
返回是false,!0>1返回是true;再加个!就是false了.两个感叹号表示非非,跟没有感叹号的效果一样.

照你的题目看a.compareDocumentPosition(b) & 16可能是个数值,而又想返回true和false,而0在boolean里面表示false,其余的表示为true;那么如果a.compareDocumentPosition(b) & 16=1,加两个双引号就返回true,如果为0就返回false.
&作为逻辑操作符时:
表达式1&表达式2:表达式1不成立,表达式2也执行
&作为位操作符时,把数字转换为二进制再做位运算,例如6&11,6的二进制为110,11的二进制为1011,那么0110&1011=0010,结果为2(1&1=1,1&0=0,0&0=0)

逻辑“非”运算符“!”
就是非运算一次以后,所得结果,再非运算一次.

<script>
var s = true;
alert(!s);
alert(!!s);
var n = 1;
alert(n!=1);
alert(!n!=1);
</script>

一个感叹号代表取反,2个感叹号就代表取反后再取反:

例子:

!true  //--->false;
!!ture //--->true;

两个否定(!!)操作符强行将未定义的值(undefined)显式地设为false。