源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

关于js new Date() 出现NaN 的分析

  • 时间:2021-05-16 23:53 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:关于js new Date() 出现NaN 的分析
此NaN不为NaN: 程序代码如下:
[u]复制代码[/u] 代码如下:
var date =new Date(d); if(!date || !date.getFullYear) { return; } return S.Date.format(d,'yyyy-mm-dd');//格式化函数,跟此文无关
在其他浏览器下正常,但是在ie下,程序报错 在ie调试器下,发现date 为NaN,如图: [b][img]http://files.jb51.net/file_images/article/201210/2012102301285747.jpg[/img] [img]http://files.jb51.net/file_images/article/201210/2012102301285748.jpg[/img] [/b] 如果是NaN,那么if判断会返回true,会 return "",但是诡异的一幕发生了,  [img]http://files.jb51.net/file_images/article/201210/2012102301285749.jpg[/img] 代码说明if判断返回了false,控制台的结果也说明了这一点: [img]http://files.jb51.net/file_images/article/201210/2012102301285750.jpg[/img]   可以看出date = NaN,但是 !date 为false,!NaN 为 true,我的第一反应,ie下JS的Bug? 然后又做了一些测试
[u]复制代码[/u] 代码如下:
var date = NaN; alert(!date) //返回true var date = new Date('2011-1-1'); alert(!date) //返回false
但是我想了一下还是不太对,又在控制台做了下面的测试: [img]http://files.jb51.net/file_images/article/201210/2012102301285751.jpg[/img]    这个说明date的getFullYear是存在的,那么date是个对象  [img]http://files.jb51.net/file_images/article/201210/2012102301285752.jpg[/img] 这个也说明了,date是个object 而不是 NaN,仅仅是ie调试器的一个问题 date.getFullYear() =》NaN date.getDate() =》NaN 这些NaN则为真正的NaN 总结 : 在ie下 new Date('date text') 时返回的结果是一个特殊的日期对象,只是ie调试器将之显示成了NaN, 对其调用返回number的方法将都会返回NaN.
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部