这个javascript变量是什么意思?

时间:2012-01-19 13:51:48

标签: javascript

当我创建变量时,我不会在等号后使用括号。

为什么此代码在等号后使用括号?有谁能解释一下?我想知道等号后的含义是什么。

var start = (new Date).valueOf(),

5 个答案:

答案 0 :(得分:2)

围绕new Date的约束导致首先评估,因此创建日期,然后在新创建的日期调用valueOf

这基本上就像在做

var d = new Date();
var start = d.valueOf();

但在一条线上。

但是,它应该是(new Date()).valueOf()。现在有什么错误。

答案 1 :(得分:2)

这样做的目的是缩短以下代码:

var date = new Date();
var start = date.valueOf();

但你不能写:

var start = new Date().valueOf();

因为没有Date().valueOf()可以用作构造函数,所以你必须添加大括号。大括号中的部分将首先执行(创建一个新的日期),并且将在大括号中的代码结果上调用valueOf()(在构造的日期读取:)。也就是说,解决方案就是我们在你的问题中得到的:

var start = (new Date).valueOf();

所有这一切的结果都是以毫秒为单位的时间戳。

答案 2 :(得分:1)

简单的事情。 new Date返回日期。没有括号,它将是new Date.valueOf()。由于Date没有方法valueOf(),因此会导致错误。

但是,Date的一个实例具有此功能。所以我们使用括号。 (new Date).valueOf()

相同
var start = new Date;
start.valueOf();

答案 3 :(得分:1)

此方法返回Date对象的等效值,以毫秒为单位。

毫秒表示为一个整数,表示1970年1月1日午夜(GMT)与Date对象中指定的日期和时间之间的毫秒数。

答案 4 :(得分:1)

围绕new Date的包装parens评估调用以创建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