JavaScript中|运算符用法解析:新手求助代码示例疑问
关于JavaScript中
|运算符和((a*2 | 0))的解释 嘿,作为JS新手碰到这个运算符确实容易懵,我来给你掰扯清楚~
首先得搞懂|这个按位或运算符在JavaScript里的特殊用法:
- 按位或本来是对两个数的二进制位做OR操作,但当它和
0搭配使用时,有个很实用的小技巧:它会把浮点数向下取整,同时转换成32位整数。效果类似Math.floor(),但有个关键区别——对负数来说,| 0是向0取整(比如-1.5 | 0得到-1),而Math.floor()是严格向下取整(Math.floor(-1.5)得到-2)。
接下来拆解你的代码片段:
<!DOCTYPE html> <html> <body> <p>Click the button to display a number between 0 and 1</p> <button onclick="myFunction()">Try it</button> <p id="demo"></p> <script> function myFunction() { var a=Math.random(); var x = ((a*2 | 0)); document.getElementById("demo").innerHTML = x; } </script> </body> </html>
我们一步步看逻辑:
Math.random()会生成一个0(包含)到1(不包含)之间的浮点数,比如0.345、0.982这类。a*2之后,数值范围就变成了0(包含)到2(不包含)之间的浮点数,比如0.69、1.964。- 最后
| 0做取整操作:- 如果原
a在0到0.5之间,a*2就是0到1的浮点数,取整后得到0; - 如果原
a在0.5到1之间,a*2就是1到2的浮点数,取整后得到1。
- 如果原
说白了这段代码就是随机生成0或者1,相当于一个简单的二进制随机数生成器~
另外补充个小细节:现在很多开发者更愿意用Math.floor()或者Math.trunc()来做取整,因为可读性更强,但| 0是一种比较复古的简洁写法,在老代码或者追求极简的场景里偶尔会见到。
内容的提问来源于stack exchange,提问作者Prashobh K V
相关产品推荐
相关产品推荐

