“+新date”中的加号是做什么的

我在几个地方见过这个

function fn() { return +new Date; } 

我可以看到它是返回一个时间戳,而不是一个date对象,但我找不到任何有关加号的文档。

谁能解释一下?

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

 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

JavaScript是松散的types,所以它在某些情况下执行types强制/转换:

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 

这是关于“一元添加”操作符的规范 。 希望它有帮助…

JavaScriptdate可以写成一个string:

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

或作为一个数字:

1441866774938

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

来到你的问题,通过在赋值运算符'='后面添加'+',将Date转换为相等的数值。

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

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

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

 new Date().valueOf() == (+new Date) // true 

它完全一样的事情:

 function(){return 0 + new Date;  }

结果如下:

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