• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Dateにnewを付与せず(関数として)呼び出した)

Dateにnewを付与せず(関数として)呼び出した場合、なぜ結果がUTCになるのか?

このQ&Aのポイント
  • Dateにnewを付与せず(関数として)呼び出した場合、結果はUTCとなります。これは、Dateオブジェクトが現在の時刻(UTC)で初期化されるためです。
  • この挙動は、MDNやmsdnのリファレンスでも明示されており、GlobalオブジェクトやDateオブジェクトの仕様に記載されています。
  • 具体的なURLは、以下のようになります。Dateオブジェクトにパラメータを渡さなかった場合の初期化に関しては、msdnのリファレンスが参考になります。

質問者が選んだベストアンサー

  • ベストアンサー
noname#177743
noname#177743
回答No.1

既にECMAを見ているようですので、そこに書いてある通りです。 15.9.2 The Date Constructor Called as a Function When Date is called as a function rather than as a constructor, it returns a String representing the current time (UTC). とありますので、関数としてDateを呼び出した場合には、UTCのテキストが返されます。そういう仕様ですので。また、 NOTE The function call Date(…) is not equivalent to the object creation expression new Date(…) with the same arguments. とあるように、Dateコンストラクタを呼び出した場合、new Dateと等価ではないぞ、ということですね。msdnのリファレンスにないのは、よくわかりませんが、msdnではいらないと思ったか見落としたかしたんでしょう、きっと。そのへんは当事者でないと……。 Date関数はどこにあるのでしょうか? ということですが、これはどういう意味なのでしょう。Dateオブジェクトをそのまま呼び出しているのですからその中に処理はありますが(そもそもオブジェクト=関数だし)。そういう意味ではない?

re97
質問者

補足

回答ありがとうございます >そういう意味ではない? ・ECMAのカテゴリーで言うと、Date関数はどこに該当するのでしょうか? ・Dateオブジェクトの中のDate関数? ・もしそうだとしたら、Dateオブジェクト生成しなくても利用できるのでしょうか? ・オブジェクトと言うか、変数自体が分かっていないのですが、 例えば、var = hoge; とする行為は、「ECMA」的に言えばどういうことになるのでしょうか? ・グローバルオブジェクトを生成している? ・それとも、変数だから、オブジェクトとは無関係? ・ECMAのカテゴリーで言うと、変数はどこに該当するのでしょうか?

その他の回答 (1)

  • think49
  • ベストアンサー率59% (285/482)
回答No.2

#1の補足を読みました。 ECMAに「Dateオブジェクトの中のDate関数」という区分はありませんし、「グローバルオブジェクト」も「変数」も無関係だと思います。 #1 で chiiba_kun さんが説明されている内容は下記URLにありますので、そこから処理を追うのがベターではないかと。 http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/15-9_Date_Objects.html#section-15.9.2 http://es5.github.com/#x15.9.2 > ・オブジェクトと言うか、変数自体が分かっていないのですが、 変数はただの入れ物ですので、変数に格納されているか否かは重要ではありません。今回は重要ではないと思うのですが、理解するには下記URLを追っていただくといいかなと。 http://es5.github.com/#x10.4 http://es5.github.com/#x12.2

re97
質問者

お礼

回答ありがとうございましたー

関連するQ&A

専門家に質問してみよう