“+新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(); }