typeof !== “undefined”, comparing dates, new Date, Math.min / What is wrong with this simple js code?
此代码位于我的nodeJS服务器上。 每次服务器到达它时,它都会崩溃。 不知道出了什么问题......有人能帮帮我吗?
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 withString since typeof("undefined") isString .
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语法中是可选的。