在JS中:
(~(1 << 31)) === ~(1 << 31)
> true
(~(1 << 31)).toString(2) === ~(1 << 31).toString(2)
> false
这怎么可能?我认为===
运算符是相同实体之间的严格比较?
答案 0 :(得分:2)
事实证明,由于JS中的操作顺序,我没有比较确切的值:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
成员访问.toString()
优先于按位运算符。糟糕!
答案 1 :(得分:1)
因为表达式的评估如下:
int