【问题标题】:Why 1 & 1 === 1 returns true while 2 & 2 === 2 returns false?为什么 1 & 1 === 1 返回 true 而 2 & 2 === 2 返回 false?
【发布时间】:2018-07-30 14:30:36
【问题描述】:

在控制台中,当我输入1 & 1 时,它会返回1,这就是1 & 1 === 1 返回true 的原因。

对于2 & 2,它返回2,但2 & 2 === 2返回false

为什么?

console.log("1 & 1: ", 1 & 1);
console.log("1 & 1 === 1: ", 1 & 1 === 1);
console.log("2 & 2: ", 2 & 2);
console.log("2 & 2 === 2: ", 2 & 2 === 2);
console.log("typeof(2): ", typeof 2);
console.log("typeof(2 & 2): ", typeof(2 & 2));

【问题讨论】:

标签: javascript binary operator-keyword


【解决方案1】:

正如@jonrsharpe 所说,它不会返回false,而是返回0。它被评估为2 & (2 === 2)(2 & 2) === 2true

谢谢

【讨论】:

    【解决方案2】:

    在 javascript 中,当您编写 2 & 2 时,这并不意味着 2 && 2 而是转换 2 成 32 位数字并执行 AND 运算,与您在二进制数中学到的 AND 相同,因此数字不会再次为 2 (2 & 2) === 2 不会返回真, as (1 & 1) === 1 返回 true,因为二元运算 1 AND 1 也返回 1

    【讨论】:

    • (2 & 2) === 2 返回true。我知道二元运算符。答案是关于运算符优先级。比较运算符 (===) 优先于二元运算符。在分解状态下,2 & 2 === 2 被评估为2 & true,这与2 & 1 相同,因为当评估为数字时,true 被视为 1。
    猜你喜欢
    • 2019-01-09
    • 2018-01-31
    • 2023-01-16
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-04
    • 2015-08-24
    相关资源
    最近更新 更多