3月12日(月)に開催された、Head First JavaScript読書会 03に参加しました。
本日は第4章「意思決定」。
if, switch
今回のメインはif、switchといった条件分岐。
条件分岐だけで1章使うのは贅沢…というか、薄く多くといった感じになりますね。
同じ事が繰り返されているので頭に入りやすいです。
javascriptの場合、やっぱりbreakをつけるのが大変&ミスしやすいので、ifを使う事が多いなあ。
「セミコロンはブログラム”文”の終わりにつける」
という考え方はなかったので新しい発見でした。
あと、本に書いていた「ifを繰り返すと効率が悪いからswitchを使う」というのはどの部分の「効率」なのか疑問が残りました。
【ifによる分岐】
var str = "E" if( str == "A") { alert("えー"); else if( str == "B" ){ alert("びー"); else if( str == "C" ){ alert("しー"); else if( str == "D" ){ alert("でぃー"); else if( str == "E" ){ alert("いー"); }
【同じ事をswitch文で書く】
var str = "E" switch( str ) { case "A": alert("えー"); break; case "B": alert("びー"); break; case "C": alert("しー"); break; case "D": alert("でぃー"); break; case "E": alert("いー"); break; }
これって、「評価回数」は同じだと思うのだけど、違うのだろうか。
評価回数が同じで、それぞれの評価コストが違う(caseでの評価の方がコストがかからない)、というのであれば納得できるのだけど「(ifの場合)5つのテスト条件が全て評価されるから効率が悪い」と書かれていた所に疑問が残りました。
<< 4/25 追記 >>
後日、この記事を教えてもらいました。納得。
ブラウザによってはswitch文がかなり最適化されているのですね。
現在はブラウザ(のjavascriptエンジン)がかなり高性能になっていてここまでの差はないという話もでました。
演算子、コメント、スコープ
途中で出てきた大事な事としては「各種演算子」「コメントの書き方」「スコープ(グローバル変数/ローカル変数)」の3つ。
コメントについて、コメントは「コードの動きを説明するために」書く必要があると書いてあったけど、どちらかというと「どうしてそう書いたか」を残した方がよいよね、という話をしました。(達人プログラマでもでできた話)
スコープについては「グローバル変数は本当に必要なとき以外は使わない」という方針が大事だなと思いました。
変数のスコープが大きいとどこで何をやっているかわからない不安があるから、スコープは可能な限り小さくしていきたいですね。大風呂敷を広げないというか、責任を持てるコードにするために。
今回の発見
「ゲームブック」という言葉を初めて聞きました。
「ゲームブックの14は死亡フラグ」というのも初めて聞きました。
あと、後輩の子がMacBookProを購入していました。(すごく)羨ましかったです。