typeof == "undefined"比较日期,新的日期,数学.这个简单的js代码有什么问题?

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

本文关键字:日期 quot js 代码 简单 什么 问题 比较 undefined typeof 数学      更新时间:2023-09-26

这段代码在我的nodeJS服务器上。每次服务器到达它时,它都会崩溃。不知道怎么了…有人能帮帮我吗?

dateArray[11]dateArray[12]dateArray[13]为空或为Date值。

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]要么是空的,要么是日期值

不能调用空值或未定义值的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;

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"、"string"、"boolean"、"object"、"function"answers"undefined"。括号在typeof语法中是可选的。