我遇到了一个我无法解释的有趣的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.520.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/

10-10 06:45