我希望这种比较可以跳过抛出错误,当我删除' ='它表现得像我期望的那样。知道为什么吗?
if (!0.03509624834492526 >= 0) {
throw new Error("DOH");
}
答案 0 :(得分:6)
原因是!0.0350...
正在将值转换为布尔值,结果为false。接下来,当使用等号时,将false与0进行比较是正确的,因此这是真的。请参阅以下提醒:
alert('!0.03509624834492526 is "' + !0.03509624834492526 + '"')
alert('false >= 0 is "' + (false >= 0) + '"')

如果你想检查数字是否不大于或等于0,那么它只留下一个选项,它会更小。尝试:
if (0.03509624834492526 < 0) {
throw new Error("DOH");
}
答案 1 :(得分:1)
找到答案,必须明确比较顺序,见下文:
if (!(0.03509624834492526 >= 0)) {
throw new Error("DOH");
}
答案 2 :(得分:-3)
可能是因为您使用了3个运算符,即(!,&gt;,=)
您可以在表达式中使用2个运算符
你可以像
一样改变你的表达方式if((!0.03509624834492526 > 0)&&(!0.03509624834492526 = 0)){
---
}
希望这对你有用