「+ new Date」のプラス記号は何をしますか


回答:


294

これは+単項演算子であり、次と同等です。

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

参照:http : //xkr.us/articles/javascript/unary-add/

MDN内:https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Unary_plus


4
しかし、なぜgetTime日付オブジェクトで定義されたメソッドを使用しないのですか?
tkone 2012

30
ほとんどの場合、実際にこれを使用する必要はありません。私は本当にこれで焦げました。+ new Date()は、あらゆる種類の数学演算に加えて、パフォーマンスが大幅に低下します。このjsperfを見てください。jsperf.com/ new
date

9
プログラミングの簡潔さにおける@BradKochは、間違いなく魂のウィットではありません。Pythonコミュニティは「明示的なものは常に暗黙的なものよりも優れている」と十分に述べているため。ブラウザがリグレッションを介して暗黙的に示される自動タイプ変換を変更した場合はどうなりますか?今、あなたのコードはうまくいきません!.getTime()常に保証します。
tkone 2012年

11
@Geuisもう1つの優れた理由は、できるからといって、そうすべきではないということです。
tkone 2012年

14
正弦波ECMAScript 5がありますDate.now()。これは、ミリ秒で日付と時刻を取得するための推奨される方法です。
cutemachine


6

JavaScriptの日付は文字列として記述できます。

2015年9月10日(木)12:02:54 GMT + 0530(IST)

または数値として:

1441866774938

数値として書かれた日付は、1970年1月1日00:00:00からのミリ秒数を指定します。

あなたの質問に来ると、代入演算子 '='の後に '+'を追加することにより、日付を等しい数値に変換します。

同じことは、Number()関数を使用して達成できます。

var date = +new Date(); //same as 'var date =number(new Date());'


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"

1

これは単項加算演算子であり、明示的な数値変換にも使用されるため、を呼び出すと+new Date()valueOf()文字列を取得するように、そのオブジェクトの数値を取得しようとしますtoString()

new Date().valueOf() == (+new Date)  // true

-3

これは次とまったく同じことを行います。

function(){return 0 + new Date; }

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

function(){return new Date()。getTime(); }

11
いいえ、新しい日付はありません。最初に日付を文字列に変換し、次に「0」を付加します(例:「0Tue Oct 21 2008 20:38:05 GMT-0400」);
Chris Noe、

2
1 *新しい日付になりますが、1 +新しい日付->文字列
ケントフレドリック

ええ、また同じことがnew Date/1
当てはまります
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.