私はこれをいくつか見ました 場所
function fn() {
return +new Date;
}
そして、日付オブジェクトではなくタイムスタンプを返していることがわかりますが、プラス記号の動作に関するドキュメントは見つかりません。
誰でも説明できますか?
これは+単項演算子で、次と同等です:
function(){ return Number(new Date); }
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
JavaScriptの日付は文字列として書くことができます:
2015年9月10日木曜日12:02:54 GMT + 0530(IST)
または数字として:
1441866774938
数値として書かれた日付は、1970年1月1日00:00:00からのミリ秒数を指定します。
あなたの質問に来ると、代入演算子 '='の後に '+'を追加することで、Dateを等しい数値に変換することがわかります。
number(new Date())のようなNumber()関数を使用しても同じことが実現できます。
var date = +new Date(); //same as 'var date =number(new Date());'
「単項加算」演算子に関する specification を次に示します。それが役に立てば幸い...
さらに情報を提供するために:
覚えていれば、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()
はnotと同様に扱われます。文字列として連結されます:
_0 + new Date() // "0Tue Oct 16 05:03:24 PDT 2018"
_
単項加算演算子であり、明示的な数値変換にも使用されるため、+new Date()
を呼び出すと、valueOf()
を使用してそのオブジェクトの数値を取得しようとしますtoString()
から文字列を取得します
new Date().valueOf() == (+new Date) // true