Javascript 运营商的目的是什么^&引用;?

Javascript 运营商的目的是什么^&引用;?,javascript,syntax,Javascript,Syntax,可能重复: 操作员的目的是什么:^ 编辑1:你能解释一下原因吗 >>> foo ^ bar 0 ?在1^3的情况下,XOR运算符执行一些二进制操作以获得2 1 = 00000001 ^ 3 = 00000011 ======== 00000010 = 2 JavaScript将数组语法[x,y]视为NaN当您开始使用它进行数学运算时NaN被解释为0,因此foo和bar数学开始有意义,考虑到这一点: foo => NaN

可能重复:

操作员的目的是什么:^

编辑1:你能解释一下原因吗

>>> foo ^ bar
0

1^3
的情况下,XOR运算符执行一些二进制操作以获得2

    1 = 00000001 ^
    3 = 00000011
        ========
        00000010 = 2
JavaScript将数组语法
[x,y]
视为
NaN
当您开始使用它进行数学运算时<当您对其执行位操作时,code>NaN被解释为
0
,因此
foo
bar
数学开始有意义,考虑到这一点:

foo => NaN = 00000000 ^
bar => NaN = 00000000
             ========
             00000000 = 0

foo => NaN = 00000000 ^
         3 = 00000011
             ========
             00000011 = 3

这似乎是正确的<代码>[1,2]^7=7,
[1,2,3]^9=9
,等等。

它被称为位运算符之一,它将操作数视为32位(0和1)的序列,而不是十进制、十六进制或八进制数。位异或(a^b)在每个位位置返回一个1,其中一个操作数(而不是两个操作数)的对应位为1

编辑:

而且

 9 (base 10) = 00000000000000000000000000001001 (base 2)
 14 (base 10) = 00000000000000000000000000001110 (base 2)
                   --------------------------------
14 ^ 9 (base 10) = 00000000000000000000000000000111 (base 2) = 7 (base 10)

这是按位异或运算符..用foo和bar进行异或怎么样?@hungryMind:
+[1,2]
NaN
NaN^3
3
,因为在ECMAScript规范第11.10节定义的
ToInt32
操作中,
NaN
将被转换为
0
。我想这是他期待的答案。任何人都可以很容易地找到XOR的细节,但数组和数字之间的运算符是他关心的问题。谢谢你clarification@pimvdb:谢谢,我会更新我的例子。我想你至少应该说明你从哪里复制/粘贴的。我不介意,但是你的句子读起来不太好。无论如何,令人惊讶的是,他们把你书中完全相同的例子和句子放在:)@pimvdb上,很抱歉在我最后的评论中这样说,但我在讲师给我的一本书中看到了。
a b a XOR b 
0 0 0 
0 1 1 
1 0 1 
1 1 0 
 9 (base 10) = 00000000000000000000000000001001 (base 2)
 14 (base 10) = 00000000000000000000000000001110 (base 2)
                   --------------------------------
14 ^ 9 (base 10) = 00000000000000000000000000000111 (base 2) = 7 (base 10)