为什么要在http://javascriptissexy.com/javascript-apply-call-and-bind-methods-are-essential-for-javascript-professionals/上学习 bind() 方法,我遇到了一个看起来像这样的有趣计算:
var randomNum = ((Math.random () * 2 | 0) + 1) - 1;
试图了解什么 | 确实,我遇到了 JavaScript 位运算符(https://www.w3schools.com/js/js_bitwise.asp)。
我知道这(Math.random () * 2 | 0)
是一个按位或运算。
我掌握了Math.random() * 2
有时按位值给出 0 或 1 的值(例如,0.06218657045669751 被解释为 1)。我写了一个函数来检查,在什么情况下Math.random() * 2
计算结果被视为0,在什么情况下被视为1:
function showNumber() {
console.log(Math.random() * 2);
return Math.random() * 2 | 0;
}
showNumber();
结果没有给我任何问题的答案。因为如果Math.random() * 2
给出 1.5337258727722651 它也可以解释为 1 和 0。
这种解释是随机的还是背后有任何逻辑?