当我创建变量时,在等号后不使用括号。这个javascript变量是什么意思?
为什么此代码在等号后使用括号?任何人都可以解释吗?我想知道在等号后什么意思。
var start = (new Date).valueOf(),
当我创建变量时,在等号后不使用括号。这个javascript变量是什么意思?
为什么此代码在等号后使用括号?任何人都可以解释吗?我想知道在等号后什么意思。
var start = (new Date).valueOf(),
此方法返回以毫秒为单位的日期对象的等价性。
毫秒表示为一个整数,表示1970年1月1日午夜(GMT)到Date对象中指定的日期和时间之间的毫秒数。
的paranthesis各地new Date
原因是先计算的,所以日期被创建,然后调用新创建的日期valueOf
。
这基本上就像做
var d = new Date();
var start = d.valueOf();
但在一行。
但是,它应该是(new Date()).valueOf()
。现在有什么是错误的。
简单的事情。 new Date
返回一个日期。没有括号,它将是new Date.valueOf()
。由于Date
没有方法valueOf()
,因此会导致错误。
但是,Date的一个实例有这个功能。所以我们使用括号。 (new Date).valueOf()
相同
var start = new Date;
start.valueOf();
的这个意图是缩短了下面的代码:
var date = new Date();
var start = date.valueOf();
,但你不能写:
var start = new Date().valueOf();
,因为世界上没有Date().valueOf()
,可以用来作为构造,所以你”将不得不添加大括号。大括号中的部分将首先执行(创建一个新的日期),并且valueOf()
将被调用大括号中的代码结果(读取:在构建日期)。这就是说,该解决方案是我们在你的问题有:
var start = (new Date).valueOf();
这一切的结果是毫秒时间戳。
new Date
周围的包装物将评估创建Date对象的调用,然后调用日期对象的方法 - >valueOf
。的更容易理解的例子是
(3 + 2) + 2; // = 7 - evaluates 5 then adds 2
在定义valueOf
方法为:
返回Date对象的原始值。重写Object.prototype.valueOf方法。
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date
实际上,你可以实现通过
var start = +(new Date())
// returns the integer value of the date (in milliseconds)
// aka the primitive value
同样的事情,你的意思的valueOf()函数自动转换Date对象到毫秒? – dgwkgg