• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ネストしない複数のif文でelseは必要でしょうか)

ネストしない複数のif文でelseは必要でしょうか

このQ&Aのポイント
  • if文についての疑問を質問させてください。
  • elseを未入力で複数指定することは問題があるのでしょうか。
  • 24個のifを並べるという書き方はよろしくないものなのでしょうか。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

期待通りの動作はしますので、問題はありません。ただし、 if(htime==0){alert('日が変わりました');} else if(htime==1){alert('夜中です');} ・・・・ のようにelseをつけると、条件判断が真になった段階で残りの条件判断はスキップされますが、 お書きのようにつけないと、条件判断は常に24個分実行されます。つまり無駄に判断しているわけです。まあ、それによる速度低下はほとんどゼロなので、こういう例ではどっちでも良いです。何万回も繰り返して実行される場合はelseをつけた方が良いです。 この手のは、switch/case文を使う事も出来ますね。 ただ、この場合は、文字列を配列にすると良いでしょう。 alert(['日が変わりました', '夜中です', ~, 'もうじき日が変わります'][htime]);

kiseki777
質問者

お礼

とても参考になりました。 ありがとうございました。

その他の回答 (2)

  • tracer
  • ベストアンサー率41% (255/621)
回答No.3

既に指摘がある通り、文法は間違っていませんが、効率は悪いです。 例の場合は、switchの方が向いています。 理由は、先の回答と同じく、24回常に評価させるか、1度だけ評価させるかの差です。 switch(htime){ case 0: alert("日が変わりました");break; case 1:alert('夜中です');break; ・ ・ ・ }

kiseki777
質問者

お礼

とても参考になりました。 ありがとうございました。

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 この場合、timeは必ず0~23でありどこかに引っかかるとわかるのでelseが無くても問題ないと思います。 余談ですがこのようなロジックなら以下のようにするとすっきりします。 var arr = new Array(); arr[0] = '日が変わりました'; arr[1] = '夜中です'; // 省略 arr[23] = 'もうじき日が変わります'; var htime = jikan_obj.getHours(); alert ( arr[htime] );

kiseki777
質問者

お礼

とても参考になりました。 ありがとうございました。

関連するQ&A