254

これは数か所で見たことがある

function fn() {
    return +new Date;
}

また、日付オブジェクトではなくタイムスタンプを返していることがわかりますが、プラス記号が何をしているのかに関するドキュメントは見つかりません。

誰でも説明できますか?

4

7 に答える 7

311

それが+単項演算子です。それは以下と同等です:

function(){ return Number(new Date); }

http://xkr.us/articles/javascript/unary-addおよびMDNを参照してください。

于 2008-10-21T11:49:18.670 に答える
44

JavaScript は緩く型付けされているため、特定の状況で型強制/変換を実行します。

http://blog.jeremymartin.name/2008/03/understanding-loose-typing-in.html
http://www.jibbering.com/faq/faq_notes/type_convert.html

その他の例:

>>> +new Date()
1224589625406
>>> +"3"
3
>>> +true
1
>>> 3 == "3"
true
于 2008-10-21T11:47:18.707 に答える
6

「単項加算」演算子に関する仕様は次のとおりです。それが役に立てば幸い...

于 2008-10-21T12:11:20.450 に答える
3

覚えていれば、2 つの日付の時差を見つけたいときは、次のようにするだけです。

var d1 = new Date("2000/01/01 00:00:00"); 
var d2 = new Date("2000/01/01 00:00:01");  //one second later

var t = d2 - d1; //will be 1000 (msec) = 1 sec

typeof t; // "number"

d1-0 のタイプを確認すると、これも数値です。

t = new Date() - 0; //numeric value of Date: number of msec's since 1 Jan 1970.
typeof t; // "number"

また、日付+を数値に変換します。

typeof (+new Date()) //"number"

ただし、同様に扱われない0 + new Date()ことに注意してください。文字列として連結されます。

0 + new Date() // "0Tue Oct 16 05:03:24 PDT 2018"
于 2018-10-16T12:07:47.663 に答える
-3

以下とまったく同じことを行います。

function(){ return 0+new Date; }

次と同じ結果になります。

function(){ return new Date().getTime(); }
于 2008-10-21T11:48:02.557 に答える