Head First JavaScript読書会 02に参加しました

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月に入ったらセクションのナビゲーターを担当したいなと思います。(決意)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください