Javascript 一个奇怪的时刻
我在if语句中有如下代码Javascript 一个奇怪的时刻,javascript,momentjs,Javascript,Momentjs,我在if语句中有如下代码 if (!inTime || !moment(inTime).format('m') % 15 === 0) { doSomething(); } if (!inTime || !(moment(inTime).format('m') % 15 === 0)) { doSomething(); } 通过的时间是2018-10-11T20:00:25Z。由于某种原因,满足了该条件,并且正在调用if块中的代码。经过一些工具处理后,我发现该问题的两个修复方法如下 if (
if (!inTime || !moment(inTime).format('m') % 15 === 0) {
doSomething();
}
if (!inTime || !(moment(inTime).format('m') % 15 === 0)) {
doSomething();
}
通过的时间是2018-10-11T20:00:25Z。由于某种原因,满足了该条件,并且正在调用if块中的代码。经过一些工具处理后,我发现该问题的两个修复方法如下
if (!inTime || !moment(inTime).format('m') % 15 === 0) {
doSomething();
}
if (!inTime || !(moment(inTime).format('m') % 15 === 0)) {
doSomething();
}
*注意爆炸后和0之后的帕伦
或者我可以这样做
if (!inTime || !moment(inTime).minute() % 15 === 0) {
doSomething();
}
我很想知道是否有人知道为什么会这样
!moment(inTime).format('m') % 15 === 0
就好像是写的一样
((!moment(inTime).format('m')) % 15) === 0
因此,其评估过程如下:
moment(inTime).format('m')
给出字符串“0”!矩(inTime).format('m')
给出布尔值false
,因为“0”是真的((!moment(inTime).format('m'))%15)
在将false
转换为数字(0
)并计算模数后,给出数字0((!moment(inTime).format('m'))%15)==0
给出true
代码>绑定得非常紧密
因为您有一个ISO日期字符串,所以只使用本机日期API可能更简单:
if (!inTime || new Date(inTime).getMinutes() % 15 !== 0)
你还有0分钟0%15
是0
正确的,但如果不是,砰的一声应该会使条件运行0@AustenElswick
仅应用于.format()
调用结果,而不是=
比较。