前置加号如何处理新日期?

时间:2018-11-08 02:44:25

标签: javascript operators

我最近遇到了这个有趣的代码行:

var date = +new Date;

console.log(date);

因此,我尝试将+放在字符串之前,以更好地了解发生了什么,这就是结果:

var one = +"1"; // -> 1
var negativeTwo = -"2"; // -> -2
var notReallyANumber = +"number: 1"; // -> NaN

console.log(one, negativeTwo, notReallyANumber);

似乎在字符串前面放置+-符号时,都会将字符串转换为数字,如果在字符串之前放置负号,则得到的数字将是负面的。

最后,如果字符串不是数字,则结果将为NaN

那是为什么?

如何在字符串前放置+-符号将其转换为数字,它又如何应用于new Date

编辑:

  

+符号对new Date有何影响?例如,值Wed Nov 07 2018 21:50:30 GMT-0500如何转换为数字表示形式?

1 个答案:

答案 0 :(得分:1)

+将以下表达式转换为数字(如果可以)。如果以下表达式是 object ,则将调用该对象的valueOf函数,以便调用returns the primitive value of the specified object,然后可以将该https://www.quartz-scheduler.net/强制为数字。

  

+号对新日期有何影响?例如,WMT Nov 07 2018 21:50:30 GMT-0500的值如何转换为数字表示?

Date.prototype.valueOf返回所讨论的日期对象的整数时间戳:

console.log(
  new Date().valueOf()
);

实际上,当+Date对象之前时,就会调用此方法,正如您在此处看到的(出于演示目的,这不应在真实代码中):

Date.prototype.valueOf = () => 5;
console.log(+new Date());

因此,Date对象通过valueOf转换为数字。 (这实际上是在+强制数字运算之前的之前,但是由于它已经是数字,因此不会进一步影响任何内容)