首頁  >  文章  >  web前端  >  關於js new Date() 出現NaN 的分析_javascript技巧

關於js new Date() 出現NaN 的分析_javascript技巧

WBOY
WBOY原創
2016-05-16 17:49:021469瀏覽

此NaN不為NaN:

程序代碼如下:

複製代碼 代碼如下:

var date =new Date(d);
if(!date || !date.getFullYear) {
return;

}
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. 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.

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn