- ベストアンサー
ネストしない複数のif文でelseは必要でしょうか
- if文についての疑問を質問させてください。
- elseを未入力で複数指定することは問題があるのでしょうか。
- 24個のifを並べるという書き方はよろしくないものなのでしょうか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
期待通りの動作はしますので、問題はありません。ただし、 if(htime==0){alert('日が変わりました');} else if(htime==1){alert('夜中です');} ・・・・ のようにelseをつけると、条件判断が真になった段階で残りの条件判断はスキップされますが、 お書きのようにつけないと、条件判断は常に24個分実行されます。つまり無駄に判断しているわけです。まあ、それによる速度低下はほとんどゼロなので、こういう例ではどっちでも良いです。何万回も繰り返して実行される場合はelseをつけた方が良いです。 この手のは、switch/case文を使う事も出来ますね。 ただ、この場合は、文字列を配列にすると良いでしょう。 alert(['日が変わりました', '夜中です', ~, 'もうじき日が変わります'][htime]);
その他の回答 (2)
- tracer
- ベストアンサー率41% (255/621)
既に指摘がある通り、文法は間違っていませんが、効率は悪いです。 例の場合は、switchの方が向いています。 理由は、先の回答と同じく、24回常に評価させるか、1度だけ評価させるかの差です。 switch(htime){ case 0: alert("日が変わりました");break; case 1:alert('夜中です');break; ・ ・ ・ }
お礼
とても参考になりました。 ありがとうございました。
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 この場合、timeは必ず0~23でありどこかに引っかかるとわかるのでelseが無くても問題ないと思います。 余談ですがこのようなロジックなら以下のようにするとすっきりします。 var arr = new Array(); arr[0] = '日が変わりました'; arr[1] = '夜中です'; // 省略 arr[23] = 'もうじき日が変わります'; var htime = jikan_obj.getHours(); alert ( arr[htime] );
お礼
とても参考になりました。 ありがとうございました。
お礼
とても参考になりました。 ありがとうございました。