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

typeof !== “undefined”, comparing dates, new Date, Math.min / What is wrong with this simple js code?

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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;
    }
}


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

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

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

编辑:
这是我正在做的事情的方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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;


typeof(new Date()) is always give you an object and you are comparing it with String since typeof("undefined") is String.

1
2
3
4
5
console.log(typeof 123)// return number

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

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

typeof运算符将类型信息作为字符串返回。 typeof返回有六个可能的值:"number","string","boolean","object","function"和"undefined"。
括号在typeof语法中是可选的。