if文を入れ子にした場合のWinの反応は?

[上に] [前に] [次に]
みんこ [E-Mail] [HomePage] 1999/06/04(金) 13:51:32
単純な条件式なんですが、if文使って時間によって処理を
振り分けようとしたんですね。
その際、
{
if(*)〜;
else{if(**)〜;
else{if(***)〜;
}}}
みたいに入れ子にして作っていたところ、5つくらいで
WinIE4では反応しなくなってしまいました。
ちなみに入れ子をやめて一つずつの条件式にしたら動きました。

で、基本的に問題はないのですが、参考までに教えて下さい。
if文はあまり入れ子にはしない方がいいのでしょうか?
どの程度までなら処理に負担はかからないと考えられるのでしょうか。
件のスクリプトの場合、同じ物はMacIE3とNN4.5は平気でした。
(......まい○ろそふとだから?)

なんかテーブルみたいなもんかなあと思いますが。
テーブルの入れ子で8つ入れたらNNが落ちた、って発言が昔ありましたので。

ふじ 1999/06/04(金) 15:49:23
書き方としては、
if(*){〜;
}else if(**){〜;
}else if(***){〜;
}else{〜;
って書いた方がよろしいかと。入れ子にしないで。

みんこ 1999/06/04(金) 16:16:27
ふじさん、どうもです。
おっしゃることはわかります。っていうかそうやって書き直しました。(言い方が悪かったのか...)
私もあまり入れ子使わないので(閉じタグの数を間違えるから)
今回初めて使ったらエラーが。で、入れすぎはだめなのかなあと。
でもWInで作って確認しているらしい入れ子なスクリプト
(具体的にはジャストネットのごあいさつサンプル)
コピーして使っても隣のWinでエラーになったりしましたので
入れ子が有効・無効になる条件が何かあるのかなあと思った次第です。

あのう、基本的な問題ですが入れ子でエラーってよくあること
なですか?テーブルみたいに処理が重くなるとか。
やっちゃいかん、という具体的理由を教えていただけると参考になるのですが。

ふじ 1999/06/04(金) 16:47:10
>入れ子でエラー
まともな処理系ならあり得ないことでしょうが・・・

やらない方が良い理由は、
・読みにくい。デバッグしにくくなる。
・条件によって振り分けるという意味からして、
振り分けられた後の処理は同じ階層(インデント位置)にあった方が<趣味的な問題(^^;
・(たぶんちょっとだけ)入れ子でない方が速い(と思う。未確認)

閉じカッコについては、対応するカッコを確認する機能が付いている
賢いエディタを使うと、楽です。ViViとか。

たこすけ 1999/06/04(金) 17:53:13
> WinIE4では反応しなくなってしまいました
ん〜、ウチの環境(Win98+IE4)では
入れ子が10個以上でも大丈夫でした。

> 入れ子でエラーってよくあることなんですか?
if文の入れ子でエラーになったという話は聞いたこと無いです
# if文で入れ子にする人もあまり見かけませんが・・・・

> テーブルの入れ子で8つ入れたらNNが落ちた
ネスケ特有のバグですね。
でも、タグの入れ子とスクリプトの入れ子って
同一視してよいのかな〜?

みんこ 1999/06/04(金) 18:09:58
[[解決]]
たこすけさん毎度どうもです。

文脈見てると入れ子でエラーってそうそうお目にかかるもんでは
なさそうですね。じゃあアレは何だったんだろう...。
なんか状況としては
入れ子にチャレンジして作ってみたら無反応だわ〜、
入れ子が悪いのかな?じゃあ直しちゃえ〜、ああ動いたばんざーい。
ってかんじだったのでそれ以外の理由がなさそうだったんですが。
(他のブラウザでは動いたので閉じカッコまちがいとかではないはず)

>まともな処理系ならあり得ないことでしょうが・・・

そうですよね。こんなもんでエラーかまされたら何もできません。
だから妙だとは思っていたのですが、
...多分うちの環境か何かがおかしいんでしょう、ということで
安心しました。(いいんだろうか)
ということでとりあえず疑問は解けたので解決です。
ありがとうございました。

># if文で入れ子にする人もあまり見かけませんが・・・・

http://www.justnet.ne.jp/javascript/sample/d02/index.htm

こちらでものすごい入れ子なスクリプトを拝めます。
タイトルは「超シンプル」ですがソースは私の頭には入りません。

たこすけ 1999/06/04(金) 18:53:07
> http://www.justnet.ne.jp/javascript/sample/d02/index.htm
> こちらでものすごい入れ子なスクリプトを拝めます

なるほど、OKで正解ならif、キャンセルで正解ならelseに
次の分岐に用意してるのか。
これを応用すれば対直リンクにもなりますね(笑)

ところで、最初の発言のご自分のページのURLが間違ってませんか?

[上に] [前に] [次に]