【发布时间】:2020-09-01 08:30:12
【问题描述】:
谁能解释一下为什么两个代码sn-ps不一样?
第一个是正确的,
if (coolDownTimer.read() === 0) {
alert()
if (errorCoolDownPeriod > 0) {
await coolDownTimer.start()
}
} else if (coolDownTimer.read() >= errorCoolDownPeriod) {
alert()
coolDownTimer.reset()
}
但我不喜欢将alert() 写两次,所以由于errorCoolDownPeriod 是一个正数,我想我可以这样做
if (coolDownTimer.read() > 0) {
alert()
if (coolDownTimer.read() === 0) {
// alert()
if (errorCoolDownPeriod > 0) {
await coolDownTimer.start()
}
} else if (coolDownTimer.read() >= errorCoolDownPeriod) {
// alert()
coolDownTimer.reset()
}
}
但是当我测试它时,它们的行为并不相同。
问题
为什么两个代码 sn-ps 的行为不一样?
【问题讨论】:
-
好吧
coolDownTimer.read() > 0和coolDownTimer.read() === 0看起来它们是不兼容的条件。 -
是的,出于某种原因,但我不明白为什么。
-
if (coolDownTimer.read() > 0) ... if (coolDownTimer.read() === 0)永远不会进入第二个条件,因为如果它进入第一个条件,coolDownTimer.read()的值将永远无法满足第二个条件。 -
你是认真的吗?一个数可以既是零又非零?
-
@SandraSchlichting 因为一个值不能同时是
n === 0 && n > 0
标签: javascript node.js algorithm ecmascript-6