• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Javascriptのreturnについての質問です。)

Javascriptのreturnについての質問です。

このQ&Aのポイント
  • Javascriptのreturn文の動きと役割について説明してください。
  • 引数の"diff"と"diff * 3600000"の役割について教えてください。
  • "var msg;"がなにも代入していない理由を教えてください。

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

  • ベストアンサー
回答No.3

私も勉強中なので、話半分に聞いてください。 returnの動きがわからないとのことですが、まず先に、 showNow(){...} の部分では関数を定義しているだけで、実行されてはいません。 実際に実行するためには showNow(diff); と書く必要があります。(diffの部分は値です) なので、11、12、13の部分でそれぞれshowNow関数が呼び出され、そこで初めて実行されているということになります。 順を追ってみてみると、11のdocument.write内でshowNowが呼び出され、その引数は0になっています。 ここで diff=0 というようにdiffに0が代入されます。 つまり、 showNow(0); という風に関数を呼び出した場合、diffは0として、 showNow(1); ならdiffは1として扱います。 そして var msg; ですが、これはローカル変数を定義しています。 javascriptでは変数にローカル変数、グローバル変数というものがあります。 ここは説明を省きますが、javascriptはローカル変数を使う方が実行速度が速いです。そしてローカル変数を使うためには必ず var ...; のような形で使う前に定義しておく必要があります。 showNow関数内ではdiffの計算のためにmsgとnowというローカル変数が使われているので、それを一番最初に定義してあります。 そしてshowNow内の処理を順に行っていくと、最後に return msg; があります。 ここでは呼び出したshowNow(0)にmsgの値を返しています。なので、 document.write("東京の時刻:" + showNow(0) + "<br />"); が document.write("東京の時刻:" + msg + "<br />"); という感じになります。

nekoze-man
質問者

お礼

大変分かりやすい説明ありがとうございます!! metametamu様の説明を聞きながら改めて参考書を読んだら理解できました!! これでやっとスッキリして前へ進めます! ありがとうございました!!!

その他の回答 (2)

  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.2

関数というものが理解できていないのではないでしょうか? その参考書にも説明が載っていると思いますのでもう一度確認されてみてはいかかでしょうか。 showNowの引数のdiffは現地時刻との時差を時間単位で指定するものですね。 -14であれば14時間前の時刻、-9であれば9時間前というように。 DateクラスのsetTime()の引数はミリ秒で指定しなければいけないので、diff * 36000000 として時間からミリ秒に変換しています。 3600000 = 60(分)* 60(秒)* 1000(ミリ秒) ということです。 var msg; は#1さんもおっしゃているように変数の定義をしているだけです。 2行目に書かずに5行目のmsgの前にvarと書いても同じことです。

nekoze-man
質問者

お礼

すいません!おっしゃる通りたぶんまだ関数というのが理解できていないのだと思います。 しかし皆さんのおかげでだいぶ理解できるようになってきました!

  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.1

順番に行きます。 > 引数の「diff」はここではどういった役割をしているのでしょうか? この関数「showNow」を呼び出したときの引数を受け取る変数です。 実際には、11,12,13の括弧の中のものが入ります。 > 「diff * 3600000」はどういった意味なんでしょうか? 関数を呼び出す側では、時刻で呼び出しているので、マイクロ秒に換算しているようです。 > なぜ「var msg;」はなにも代入していないのでしょうか? 変数を定義しているだけです。 > 8,の「return msg」が1~ 実際の実行順序は、 (関数定義は最初実行されません) 11→1→2~7→8→12→1→2~7→8→13→1→2~7→8→終了 となります。

nekoze-man
質問者

お礼

なるほど、diffの役割がよく分かりました! ありがとうございます!

関連するQ&A