サイ本読み中。

今、6章の途中。
4章に書いてあった変数のスコープはちょっとはまりどころっぽいので注意。

  • 暗黙的に(varを使わずに)宣言された変数はグローバルスコープになる。
  • Javascriptの変数にはブロックレベルのスコープは存在しない。if文とかのブロックの中で宣言された変数は、そのブロックの外でも参照できる。(関数の中のブロックの場合はその関数内ならどこからでも参照できる)
  • Javascriptの変数スコープは関数スコープとグローバルスコープのみ。(関数が入れ子になっている場合は内側の関数から外側の関数で宣言された変数を参照できる)

この辺は言語ごとに微妙に違うところなので結構混乱してしまう。

あとあんなに嫌いだった無名関数がなんか面白くなってきて
↓こんなのとか作って、「お、ちゃんと表示される」と喜んだりしています。

(function(x){
   alert(x);
})("hashimoto");

やっぱりlambdaなんですねー。これは。
でもやっぱり名前空間を区切るための構文は専用のがあったほうがいいと思う。変数スコープも理解していないような初心者が構文にいちゃもんつけるのもなんか間違ってる気もしますが。

lambdaで思い出したけど、SICPがあんまり読めてない。。練習問題も難しくてあきらめモード。