關於js new Date 出現NaN 的分析

2022-03-08 18:38:08 字數 1305 閱讀 1323

簡介:

在乙個專案中需要進行日期的格式化,後台傳到前端是時間的整數(date.gettime),當後台資料返回字串時,發現轉換日期時在ie下變成nan,但是真的是這樣嗎?接下來我們慢慢分析。

此nan不為nan:

程式**如下:

var date =new date(d);

if(!date || !date.getfullyear)

return s.date.format(d,'yyyy-mm-dd');//格式化函式,跟此文無關

在其他瀏覽器下正常,但是在ie下,程式報錯

在ie偵錯程式下,發現date 為nan,如圖:

如果是nan,那麼if判斷會返回true,會 return "",但是詭異的一幕發生了,

**說明if判斷返回了false,控制台的結果也說明了這一點:

可以看出date = nan,但是 !date 為false,!nan 為 true,我的第一反應,ie下js的bug?

然後又做了一些測試

var date = nan;

alert(!date) //返回true

var date = new date('2011-1-1');

alert(!date) //返回false

但是我想了一下還是不太對,又在控制台做了下面的測試:

這個說明date的getfullyear是存在的,那麼date是個物件

這個也說明了,date是個object 而不是 nan,僅僅是ie偵錯程式的乙個問題

date.getfullyear() =》nan

date.getdate() =》nan

這些nan則為真正的nan

總結

在ie下 new date('date text') 時返回的結果是乙個特殊的日期物件,只是ie偵錯程式將之顯示成了nan, 對其呼叫返回number的方法將都會返回nan.

vlookup函式的使用出現N A怎麼辦

解決方法 1 選中要查詢的列,使用 替換 選項,將所有的空格刪除掉 2 vlookup函式的第一列必須對應查詢值的列 3 在範圍查詢時,如果使用精確查詢,就會出現 n a 這時應該使用非精確查詢方法。本教程操作環境 windows7系統 microsoft office excel2007版 del...

深度學習網路訓練中出現loss函式為nan的原因

說法一 說明訓練不收斂了,學習率太大,步子邁的太大導致梯度 等都是有可能的,另外也有可能是網路的問題,網路結構設計的有問題。我現在的採用方式是 1.弱化場景,將你的樣本簡化,各個學習率等引數採用典型配置,比如10萬樣本都是同一張複製的,讓這個網路去擬合,如果有問題,則是網路的問題。否則則是各個引數的...

關於jupyter出現kernel dead問題

此問題出現主要是由於jupyter中有包需要更新,解決方法 更新jupyter中包 更新應用即可 我的到此並未成功,還是提示dead kernel問題 我又在cmd中重新安裝了乙個kernel解決了問題 1 先建立虛擬環境,我之前已經建立過 2 安裝ipykernel pip install ipy...