Nic*_*400 2 javascript operators
我从另一个地方复制了这一行:
Total += parseFloat($(this).val())|0;
Run Code Online (Sandbox Code Playgroud)
操作员的功能是|什么?当我改变数字时,我会得到不同的结果.
T.J*_*der 13
在|JavaScript中是一个整数位或运算符.在这种情况下,它剥离了返回的任何小数部分parseFloat.该表达式parseFloat($(this).val())将产生一个带有(可能)小数分量的数字,但随后|0会将其转换为整数,或者它0(它意味着它不会改变),因此总体结果是得到一个整数.
因此,在功能上,它会截断数字的小数部分.-1.5变成了-1,1.5变成了1.这就好比Math.floor,但截断而不是舍入"向下"(Math.floor(-1.5)是-2 -下一个最低整数-而不是-1作为|0版本给我们).
所以也许这就是为什么它被用来切断(而不是"落地")数字的小数部分.
或者,它可能是一个错字.该代码的作者可能打算写这个(注意||而不是|):
Total += parseFloat($(this).val()) || 0;
Run Code Online (Sandbox Code Playgroud)
这可以抵御$(this).val()返回""或类似的可能性,从而导致parseFloat返回NaN.它使用奇怪强大的||运算符返回0而不是NaN在那种情况下.(并且有一个广告,用于在运算符周围放置空格.)必须知道代码的上下文,以便说明|在添加时是否有意义地截断为整数()Total,或者它们是否只是为了保护NaN案例.
| 归档时间: |
|
| 查看次数: |
1523 次 |
| 最近记录: |