JavaScript中的时间戳

3
为了在 JavaScript 中获取时间戳,您可以编写如下代码:
// Usual Way
var d = new Date();
timestamp = d.getTime();

但我发现也可以通过以下方式获得相同的结果:
// The shortest Way
timestamp = +new Date();

有人能帮我理解最短路径算法是如何工作的吗?
2个回答

5
那就是一元加运算符。它会尝试将其后面的参数转换为数字,如果它不是一个数字。Date对象实现了一种方法,允许它被转换为一个数字,这个数字与getTime()方法相同的时间戳。
使用括号是一种更易读且明显的获取时间戳的方法,而不需要使用额外的变量:
var timestamp = (new Date()).getTime();

好的,一元加运算符的工作原理很清楚;例如,+"1"会给我一个数字1;但为什么+new Date()只给我时间戳呢?我在Date {Tue Oct 04 2011 13:04:46 GMT+0200 (Romance Daylight Time)}中看不到任何时间戳字符串。 - antonjs
时间戳是 Date 对象所知的“原始值”。日期在内部存储为时间戳。当您尝试将对象转换为数字时,浏览器会给出该数字。 - lonesomeday
能否编写一个非常基本的示例(具有原始值的对象),在应用+运算符时产生相同的结果? - antonjs
@AntonJs 不可以,但是你可以通过定义 valueOf 方法来实现类似的功能。参考链接 - lonesomeday

0

JavaScript是一种动态类型语言,它会尝试根据上下文进行转换。

在Date对象前添加一元加号时,它将被转换为数字。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接