什么's的函数|"(管道)操作员

What's the function of the "|" (pipe) operator?

本文关键字:管道 quot 操作员 函数 什么      更新时间:2023-09-26

我从另一个地方复制了这行:

Total += parseFloat($(this).val())|0;

操作员|的功能是什么?当我更改数字时,会得到不同的结果。

JavaScript中的|是一个整数位OR运算符。在这种情况下,它去掉parseFloat返回的任何小数部分。表达式parseFloat($(this).val())将产生一个(可能)带有小数成分的数字,但随后|0将其转换为整数,并将其与0进行OR运算(这意味着它不会改变),因此总体结果是得到一个整数。

因此,在功能上,它截断了数字的小数部分-1.5变成-1并且1.5变成1。这类似于Math.floor,但截断而不是四舍五入(Math.floor(-1.5)-2—下一个最低整数—而不是|0版本提供的-1)。

也许这就是为什么它被用来切掉(而不是"下限")数字的小数部分。

或者,它可能是一个打字错误。该代码的作者可能有意编写以下内容(注意||而不是|):

Total += parseFloat($(this).val()) || 0;

这防止了$(this).val()返回""或类似内容,导致parseFloat返回NaN的可能性。在这种情况下,它使用了非常强大的||运算符来返回0,而不是NaN。(还有一则在运算符周围加空格的广告。)必须了解代码的上下文,才能判断在添加到Total时,截断为整数(|)是否有意义,或者他们只是在为NaN的情况辩护。

javascript中的|运算符是按位或运算符

  • https://developer.mozilla.org/en/JavaScript/Reference/Operators/Bitwise_Operators

此运算符将操作数视为32位整数,如果其中一个为1,则每一位都返回1,否则返回0。