当前位置:  开发笔记 > 编程语言 > 正文

加号在'+新日期'中的作用是什么

如何解决《加号在'+新日期'中的作用是什么》经验,为你挑选了4个好方法。

我在几个地方见过这个

function fn() {
    return +new Date;
}

我可以看到它返回的是时间戳而不是日期对象,但我找不到有关加号正在做什么的任何文档.

谁能解释一下?



1> kentaromiura..:

这是+一元运算符,它相当于:

function(){ return Number(new Date); }

请参阅:http: //xkr.us/articles/javascript/unary-add/

在MDN中:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Unary_plus


几乎在任何情况下你都不应该使用它.我真的被烧了.+ new Date()除了任何类型的数学运算外,都会受到重大的性能损失.看看这个jsperf,http://jsperf.com/new-date-timing
正弦ECMAScript 5有`Date.now()`,这是以毫秒为单位获取日期和时间的首选方法.
@Geuis另一个很好的理由,只因为你不能意味着你应该!
编程简洁的@BradKoch绝对不是灵魂的智慧.正如python社区已经充分说明的那样"明确总是比隐含更好".如果浏览器通过回归更改了隐含的自动类型转换,该怎么办?现在你的代码不起作用了!`.getTime()`将始终确保它.
但是为什么不在日期对象上使用定义的`getTime`方法呢?!

2> Jonny Buchan..:

JavaScript是松散类型的,因此它在某些情况下执行类型强制/转换:

http://blog.jeremymartin.name/2008/03/understanding-loose-typing-in.html
http://www.jibbering.com/faq/faq_notes/type_convert.html

其他例子:

>>> +new Date()
1224589625406
>>> +"3"
3
>>> +true
1
>>> 3 == "3"
true



3> Pablo Cabrer..:

这是关于"一元添加"运算符的规范.希望能帮助到你...



4> 小智..:

JavaScript日期可以写为字符串:

2015年9月10日星期四12:02:54 GMT + 0530(IST)

或作为数字:

1441866774938

以数字表示的日期,指定自1970年1月1日00:00:00以来的毫秒数。

谈到您的问题,它是通过在赋值运算符'='之后添加'+'来实现的,从而将Date转换为相等的数字值。

使用Number()函数也可以实现相同的效果,例如Number(new Date());

var date = +new Date(); //same as 'var date =number(new Date());'

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有