有没有办法比较负0即。从Math.sign(-0)返回的-0?

时间:2016-03-21 11:26:41

标签: javascript

我在我的代码中使用JavaScript Date()实用程序,通过比较两个不同的日期来获取今天的任务。

otApp.TaskPanelUtils.getDaysDiff = function(task)
    {
        var current = new Date();
        var taskDueDate = new Date(task.unformattedDueDate())
        return Math.trunc((current.getTime()-taskDueDate.getTime())/otApp.TaskPanelUtils.oneDay);
    }

var daysDiff = otApp.TaskPanelUtils.getDaysDiff(taskItem);

if(daysDiff==0 && Math.sign(daysDiff)==0)
{
    tempItems.push(taskItem);
}

即使我getDaysDiff()得到“-0”负0 ,上述代码也能正常工作。

我想在正面为“0”的情况下填写tempItems

Math.sign(-0)将返回-0,然后如何与“-0”或-0进行比较?

1 个答案:

答案 0 :(得分:1)

  

即使我得到“-0”为负0,上面的代码也能正常工作   getDaysDiff()。

因为0-0评估为0

Math.sign(-0) == Math.sign(0) //outputs true

0 == -0; //outputs true

0 === -0 //outputs true

String(-0) //outputs "0"

修改

我建议简化/修改函数,使其返回布尔值

otApp.TaskPanelUtils.getDaysDiff = function(task)
{
    var current = new Date();
    var taskDueDate = new Date(task.unformattedDueDate())
    return ((current.getTime()-taskDueDate.getTime())/otApp.TaskPanelUtils.oneDay) > 0;
}

并将其用作

if(otApp.TaskPanelUtils.getDaysDiff(taskItem))
{
    tempItems.push(taskItem);
}