我遇到了一个我无法解释的有趣的Javascript现象。假设我想将当前时间转换为0.0到23.5之间的值,以0.5为增量-即。 0,0.5,1 1.5 ... 22,22.5,23,23.5
此代码执行以下操作:
const dateTimeNow = new Date();
let currentTime = dateTimeNow.getHours();
currentTime += (dateTimeNow.getMinutes() === 30) ? 0.5 : 0;
console.log(currentTime);
但是此单行版本无法产生正确的值:
const dateTimeNow = new Date();
let currentTime = dateTimeNow.getHours() + (dateTimeNow.getMinutes() === 30) ? 0.5 : 0;
console.log(currentTime);
希望有人能解释原因!
最佳答案
这是您的三元运算符,您的操作顺序应该像这样:dateTimeNow.getHours() + (dateTimeNow.getMinutes() === 30) ? 0.5 : 0;
dateTimeNow.getHours() + 0.5
20.5
实际上,它是这样做的:dateTimeNow.getHours() + (dateTimeNow.getMinutes() === 30) ? 0.5 : 0;
20 + true ? 0.5 : 0;
21 ? 0.5 : 0;
0.5;
要解决此问题,您只需要添加另一组括号即可:let currentTime = dateTimeNow.getHours() + ((dateTimeNow.getMinutes() === 30) ? 0.5 : 0);
关于javascript - DateTime Math可使用2行代码,但不能使用1行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60983563/