typeof!==“undefined”,比较日期,新日期,Math.min /这个简单的js代码有什么问题?

时间:2016-09-09 15:43:26

标签: javascript arrays node.js date typeof

此代码位于我的nodeJS服务器上。每次服务器到达它时,它都会崩溃。不知道出了什么问题......有人能帮助我吗?

dateArray[11]dateArray[12]dateArray[13]为空或为日期值。

var dateArray11 = null;
var tempDateValue = "";
if ((typeof dateArray[11] !== "undefined") || (typeof dateArray[12] !== "undefined") || (typeof dateArray[13] !== "undefined")) {
    dateArray11 = new Date(Math.min((dateArray[11].getTime()), (dateArray[12].getTime()), (dateArray[13].getTime())));
    if (dateArray11.getTime() === dateArray[11].getTime()) {
        tempDateValue = 11;
    }
    if (dateArray11.getTime() === dateArray[12].getTime()) {
        tempDateValue = 12;
    }
    if (dateArray11.getTime() === dateArray[13].getTime()) {
        tempDateValue = 13;
    }
}

2 个答案:

答案 0 :(得分:0)

  

typeof(new Date())始终会为您提供object,并且您将其与String进行比较,因为typeof(" undefined")为String

console.log(typeof 123)// return number

console.log(typeof new Date())// return object

console.log(typeof 'hola')//return string

typeof运算符将类型信息作为字符串返回。 typeof返回有六种可能的值:" number," "串," "布尔型," "对象," "功能"并且"未定义。" 括号在语法类型中是可选的。

答案 1 :(得分:0)

因为你说dateArray [11],dateArray [12]和dateArray [13]是空的或者是Date值。

您无法调用空值或未定义值的getTime()函数。

在调用之前,应检查dateArray [11],dateArray [12]和dateArray [13]是否为日期对象。 你可以在这个答案中看到如何检查: https://stackoverflow.com/a/643827/3442014

编辑: 这是我对你所做的事情的准备:



var dateArray=[];
dateArray[11]=new Date("2011/06/31");
dateArray[12]=new Date("2011/06/26");
dateArray[13]="";

var tempDateValue = "";

var dates=[];
if (dateArray[11] instanceof Date) dates.push(dateArray[11]);
if (dateArray[12] instanceof Date) dates.push(dateArray[12]);
if (dateArray[13] instanceof Date) dates.push(dateArray[13]);

var min = new Date(Math.min.apply(null,dates));

var tempDateValue = dates.map(Number).indexOf(+min) + 11;