水無月ばけらのえび日記

bakera.jp > 水無月ばけらのえび日記 > JavaScript勉強会 四回目

JavaScript勉強会 四回目

2012年7月27日(金曜日)

JavaScript勉強会 四回目

公開: 2012年8月7日23時0分頃

「ツッコミながらスクラムで学ぶ JavaScript勉強会」第四回が開催されました。なぜか社外からの参加者が増えて3人に。来るものは拒まず、面白ければOKという精神なので問題ありませんが、これは下手すると社内の参加者より社外の参加者の方が多くなるかも。

今回の範囲は、「よくわかるJavaScriptの教科書 (www.amazon.co.jp)」のLecture1-7~1-8の部分。いつものように、第四回目の課題を見ながらの進行です。

課題 4-1: 前回の振り返りと感想

前回を振り返っていろいろと。予約語についての議論が興味深かった、という感想が複数ありました。

あと、変態的なコードも含め、そのような実装にした意図を聞きたい、という意見が。これは非常に大切となところで、このあたりを深めると他の言語にも応用が利いたりするはずですよ。

課題 4-2: 前回の応用

現在の曜日と時刻を判定してメッセージを出し分けるプログラムを書く、というお題。

ifを入れ子にするかしないかで分かれるわけですが、以下のようなswitch文を使うといパターンが。

switch ( true ) {
case ( day === Days.MON || day === Days.TUE ) :
text = '木曜日までに課題を提出してください';
break;
case ( day === Days.WED ) :
text = '課題の提出は明日までです。未提出ならお早めに';
break;
……
}

最初意味がよく分からなかったのですが、switchに指定されたtrueと条件式の値とが比較されて動作するのですね。これはちょっとトリッキーな感じがしますが、使っている人は使っているらしいです。

課題 4-3: Lecture1-7~Lecture1-8を読んで

テキストを読んでもforとwhileをどう使い分けて良いのかよく分からなかった、という感想が複数の方から。

「whileとforの違いには悩まされることが多いです」「何ら違いはありません」などと書かれているのですが、どういうときにどちらを使うのかの説明が少し足りないのかもしれません。

課題 4-4: ドロップダウンリストを作る問題

テキストの練習問題そのまま。

単にselect要素option要素で10件のドロップダウンを作れば良いだけなので、そもそもJavaScriptで実装する必要性が全く感じられない課題です。10件が200件だとしても、べつにすぐにできますし。

それでも結構いろいろなやり方で実装した人がいましたが。

課題 4-5: 今回の範囲の練習

無限ループを使ってダイアログを出し続ける問題。

ifとwhileを使う人が多かったのですが、あえてforを使ってみたり、jQuery.deferredを使ってみたり。

課題 4-6: Lecture1-7~Lecture1-8はどうなの?

やはり、「whileとforの違いには悩まされることが多いです」「実際にはなんら違いはありません」という点を指摘した人が多かったようです。基本的には、繰り返し回数が事前にわかる場合はforを、繰り返し回数が不定の場合ややってみないと分からない場合はwhileを、という感じなのだろうと思います。

「JavaScript(というより大半のプログラム言語)には「○回繰り返す」ということを直接的に表現する構文がありません」と断言している部分に関しては、RubyのInteger#times (doc.ruby-lang.org)が話題になりました。これも厳密に言えばブロックつきメソッド呼び出しなのですが、そもそも著者が何を「直接的に表現」と言っているのかが分からないので何とも……。

あとは、select要素直下にscript要素を書くのはどうかという話。著者はマークアップにこだわりがあると思っていただけに、ここはちょっと残念でした。

関連する話題: Web / JavaScript / / ツッコミながらスクラムで学ぶ JavaScript勉強会

最近の日記

関わった本など