2012-01-19 9 views
1

変数を作成するときに、等号の後に角括弧を使用しません。このjavascript変数は何を意味しますか?

なぜこのコードは等号の後にかっこを使用しますか?誰もこれを説明できますか?私は等号の後に何が意味するのかを知りたい。

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

答えて

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

と同じである。この方法は、ミリ秒単位でDateオブジェクトの等価性を返します。

ミリ秒は、1970年1月1日午前0時(GMT)からDateオブジェクトで指定された日時までのミリ秒数を表す整数で表されます。

+0

で同じことを達成することができますか? – dgwkgg

2

paranthesis日付が作成されるので、最初に評価して、新しく作成された日付にvalueOfを呼び出すべき周りnew Date原因。

それは基本的に

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

をしているようですが、1行目にあります。

ただし、(new Date()).valueOf()である必要があります。何が今そこに誤りがあります。

1

簡単なことです。 new Dateは日付を返します。角括弧なしの場合はnew Date.valueOf()となります。 DateにはvalueOf()というメソッドがないため、エラーになります。

ただし、Dateのインスタンスにはこの関数があります。だから我々は括弧を使う。 (new Date).valueOf()

2

これの意図は、次のコード短縮することである。

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

をしかし、あなたが書き込むことはできません。

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

コンストラクタとして使用することができますtheresの無Date().valueOf()なぜなら、そうします」中括弧を追加する必要があります。中括弧内の部分が最初に実行され(新しい日付を作成する)、中括弧内のコードの結果に対してvalueOf()が呼び出されます(構築日に読まれます)。つまり、あなたの質問に答えがあります:

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

すべての結果は、ミリ秒単位のタイムスタンプです。

1

約を囲むラップは、Dateオブジェクトを作成する呼び出しを評価し、日付オブジェクトのメソッド - >valueOfを呼び出します。 Dateオブジェクトのプリミティブな値を返します

:簡単に例を理解するためには、

(3 + 2) + 2; // = 7 - evaluates 5 then adds 2 

valueOf方法は以下のように定義されるだろう。 Object.prototype.valueOfメソッドをオーバーライドします。

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date

あなたが実際にあなたがDateオブジェクトをミリ秒に変換する自動のvalueOf()関数を意味しています

var start = +(new Date()) 
// returns the integer value of the date (in milliseconds) 
// aka the primitive value 
関連する問題