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

时间:2008-10-21 11:39:58

标签: javascript syntax

我在一些places

中看到了这一点
function fn() {
    return +new Date;
}

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

任何人都可以解释一下吗?

7 个答案:

答案 0 :(得分:273)

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

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

答案 1 :(得分:41)

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

答案 2 :(得分:6)

JavaScript日期可以写成字符串:

Thu Sep 10 2015 12:02:54 GMT + 0530(IST)

或作为数字:

1441866774938

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

通过添加' +'来回答您的问题。在赋值运算符' =' ,将日期转换为相等的数值。

同样可以使用Number()函数实现,比如Number(new Date());

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

答案 3 :(得分:5)

以下是关于“一元添加”运算符的specification。希望它有所帮助...

答案 4 :(得分:2)

仅提供更多信息:

如果您还记得,要查找两个日期之间的时差,只需执行以下操作;

var d1 = new Date("2000/01/01 00:00:00"); 
var d2 = new Date("2000/01/01 00:00:01");  //one second later

var t = d2 - d1; //will be 1000 (msec) = 1 sec

typeof t; // "number"

现在,如果您检查d1-0的类型,它也是一个数字:

t = new Date() - 0; //numeric value of Date: number of msec's since 1 Jan 1970.
typeof t; // "number"

该+还将日期转换为数字:

typeof (+new Date()) //"number"

但是请注意,0 + new Date()不会受到类似的对待!它将被串联为字符串:

0 + new Date() // "0Tue Oct 16 05:03:24 PDT 2018"

答案 5 :(得分:1)

它是一元添加运算符,也用于显式数字转换,因此当您调用+new Date()时,它会尝试使用valueOf()获取该对象的数值就像我们从toString()

获取字符串一样
new Date().valueOf() == (+new Date)  // true

答案 6 :(得分:-3)

与以下内容完全相同:

function(){ return 0+new Date; }

与<:p>具有相同的结果

function(){ return new Date().getTime(); }