2月27日(月)に開催された、Head First JavaScript読書会 02に参加しました。
予習だいじ
今回は前日に該当範囲を読んでから参加することが出来ました。
やっぱり1回読んでおくことは大事ですね。
随所に散りばめられたユーモアをサクっと流しつつ、内容について話し合うことが出来ました。
どんなユーモアが飛び出してくるか、の耐性をつけておくという意味でも事前予習は大切ですね 😛
今回の発見
今回の範囲は、Webアプリを作ったことがあれば、1度は触れることのあるトピックばかりでした。
びっくりしたのは、eval(関数評価)の考え方が突然出てきたところでしょうか。
eval
Timer.setTimeout("alert('hello!!')", 2000); // 2秒後に"hello!!"とアラートを表示する
この”alert(‘hello!!’)”がなぜ「文字列」なのか。
「文字列」じゃないとどうなるのか。
ブラウザのコンソール上で実験しながら詳しく説明してもらいました。
> var bbb = function(){alert('hogehoge')}; undefined > bbb function (){alert('hogehoge')} // 文字列がでる > bbb() undefined // 実際にアラートが表示される
メモ:nodeを使ってプロンプト上で確認するときはConsole.logを使う
cookie
Cookie周りのソースは、複雑であることを加味してもサンプルソースがちょっとよくないなと思いました。
もう少し見やすくするためには ‘;’ という区切り文字列を、変数に割り当てるか、
‘;’ で結合するためのfunctionを作るか、もう少し可視性の高いコードにしたほうが良いと思いました。
実際に書いてみたら難しいのだけど。
【before】
var date = new Date(); date.setTime(date.getTime() + (30 * 24 * 60 * 60 * 1000) ); var expires = "; expires=" + date.toGMTString(); document.cookie = name + "=" + value + expires + "; path=/" ;
【after(冗長かも)】
var data = keyValue(name, value); var date = new Date(); date.setTime(date.getTime() + (30 * 24 * 60 * 60 * 1000) ); var expires = keyValue("expires", date.toGMTString()); var path = keyValue("path", "/"); document.cookie = createCookie([data, expires, path]); function keyValue(key, value){ return key + "=" + value; } function createCookie( params ) { var val = ""; for(var i = 0; i < params.length; i++ ){ if(i != 0 ) val += ";"; val += params[i]; } return val; }
※ 書いていて、”=”もうっとうしい事に気がついた
まあ、ライブラリを使うのが確実だと思います。
次回も予習してちゃんとのぞみたいと思います。
4月に入ったらセクションのナビゲーターを担当したいなと思います。(決意)