gpt4 book ai didi

javascript - 为什么 ( 无穷大 | 0 ) === 0?

转载 作者:行者123 更新时间:2023-12-03 02:17:54 28 4
gpt4 key购买 nike

我正在摆弄 JavaScript 中的按位运算符,我发现有一件事值得注意。

bitwise or operator返回1如果两个输入位之一是 1 作为输出位。这样做x | 0总是返回x ,因为| 0没有效果:

  • ( 1 | 0 ) === 1
  • ( 0 | 0 ) === 0

但是,当我计算Infinity | 0时,我得到了0 。在我看来,这是令人惊讶的,因为通过上面的应该得到 Infinity 。毕竟,( x | 0 ) === x .

我找不到 ECMAscript 规范中明确定义的位置,所以我想知道 ( Infinity | 0 ) === 0 到底意味着什么。 。也许就是这样Infinity是否存储在内存中?如果是这样,怎么还做| 0呢?操作导致它返回 0| 0不应该做任何事情吗?

最佳答案

按位运算符仅适用于整数。
Infinity 是浮点值,而不是整数。

规范says在执行操作之前,按位运算的所有操作数都会转换为整数(使用 ToInt32 运算)。

ToInt32 operation说:

If number is NaN, +0, −0, +∞ or –∞ return +0.

关于javascript - 为什么 ( 无穷大 | 0 ) === 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6650088/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com