什么's的函数|"(管道)操作员
What's the function of the "|" (pipe) operator?
我从另一个地方复制了这行:
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。
相关文章:
- 如何检查管道中未定义的项目
- 铬:“;未捕获的语法错误:意外的标记:"
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- 使用“+="操作人员
- //而不是在src=“”上使用http://"属性
- "未捕获的语法错误:意外的标记}"
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- "实例范围”;TypeScript类的getter/setter
- Javascript复选框函数:;缺少:在属性id之后"
- "“;变量未引用正确的对象
- "日期“;AJAX请求返回的类型值未定义
- 得到"TypeError:无法读取属性'filename'未定义的“;调用“npm start
- Soundcloud api"未捕获的类型错误:无法读取属性'uri'“未定义”;
- "工具提示"jQuery插件坏了
- "锻造;React中的表达式
- 图像可以从源<img src=""/>.TEXT可以在没有javascript的情况下从外部
- MongoDb聚合$match错误:"参数必须是聚合管道运算符“;
- 什么's的函数|"(管道)操作员