我最近遇到了这个有趣的代码行:
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
如何转换为数字表示形式?
答案 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
转换为数字。 (这实际上是在+
强制数字运算之前的之前,但是由于它已经是数字,因此不会进一步影响任何内容)