今天我这个小白算是又上了一课。
我需要做一个转盘抽奖的网页,当然我们不可能平均概率,所及就用到了下面的if语句
var random;
// 控制概率
var gailv = Math.random().toFixed(3);
console.log('gailv:',gailv);
if(0<=gailv<0.01){
random=1;
}
else if(0.01<=gailv<0.02){
random=2;
}
else if(0.02<=gailv<0.03){
random=3;
}
else if(0.03<=gailv<0.04){
random=4;
}
else if(0.04<=gailv<0.24){
random=5;
}
else{
random=6;
}
console.log('random: ',random);
return random;
咋一看,哎好像很对啊。但是每次转都是6无论gailv是什么值。
这时我问了大佬,他是这样回答我的:
"运算符号是有优先级的,
<= 和 <是一个优先级"。
一个优先级 那不就是 (0.03<=gailv)<0.04;
而0.03<=gailv 返回true,js会自动转换true就边1了;所以直接跳到else了;
最后https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Operator_Precedence