我真的觉得这个标题足够彻底地解释了它。当我在一些字符串操作代码中使用&符号而不是加号时,我偶然发现了这种奇怪。发现它很有趣。有人可以帮我解释一下吗?
答案 0 :(得分:14)
因为所有按位运算符 1 ,包括按位和(&
),所以使用32位整数。
此运算符将使用抽象ToInt32
运算 2 将两个操作数转换为带符号的32位整数,如果该值不是数字,此转换的结果为0
。
最后,您的表达式将被评估为:
0 & 0; // 0
参考文献:
二进制按位运算符 ECMA-262, 3rd. Ed.第11.10节
ToInt32
,ECMA-262,第9.5节
答案 1 :(得分:1)
重要的是它返回0并不是因为没有位匹配,而是因为它不支持字符串。 :)
答案 2 :(得分:1)
& 是按位AND运算符(与&& 相对,它是逻辑AND运算符)。按位&对字符串没有任何意义,所以我认为JavaScript只是简单的方法并返回0。
可能有更多的技术性解释,但基本上你给了一个荒谬的指令,并得到了一个荒谬的结果。获得错误会更好,但JavaScript不是那种语言!
答案 3 :(得分:0)
这是一个按位&将其参数转换为数字。当您将任意字符串转换为数字,并且该字符串不包含数字文本时,结果为NaN。
NaN&的结果由于某种原因,NaN为0。
尝试“2”& “3”