我有一个JS数组,在我们现有的代码中使用如下:
temp = charArray[0 | Math.random() * 26];
想知道“|”的用法究竟是什么上面代码中的符号是否有更多这样的运算符?
答案 0 :(得分:9)
来自the MDN:
按位运算符将其操作数视为一组32位(零和0) ()并返回标准的JavaScript数值。
由于32位部分是数字的IEEE754表示的整数部分(的一部分),这只是删除数字的非整数部分的一个技巧(小心它也会破坏)大整数不适合32位!)。
相当于
temp = charArray[Math.floor(Math.random() * 26)];
答案 1 :(得分:2)
|是bitwise OR,这意味着,任何一个参数中1的所有位在结果中都是1。按0或0返回给定输入,解释为整数。
在你的代码中,它主要用于转换 的Math.random() 数字到整数。底线是:
var a = 5.6 | 0 //a=5

var a = 5; //binary - 101
var b = 6; //binary - 110
a|b a|a a|0
101 101 101
110 101 000
------ ------ ------
111-->7 101-->5 101-->5