19:25:20 # Life javascriptのthisとかfunctionとか変数とかのスコープがよくわからない。 何読めばよくわかるんだろうか。 なんか驚愕した仕様としては、関数スコープでvarで宣言した変数はvarの行より手前でも有効らしい。C++からくると未定義かグローバル変数を参照するだろうと思うのだが、違う。
var a = 'global'; function hoge() { console.log(a); var a = 10; console.log(a); } console.log(a); hoge();
var name = function functionName() {}は var name = function() {} と外のスコープに対しては 同じ挙動をしてほしいところだが、 実装によってはfunctionNameに意味がある処理系がありそうだ。
07:10:44 # Life コールバックとして呼ばれるクロージャは最後のパラメータがいい。 インラインで定義されている関数のあとにタイムアウトの時間が記述されているなんて読みにくくてしょうがない。 setTimeout というjavascript API を今定義しなおすなら、まず'set'というセッターっぽい名前じゃない名前を付けたい。たとえば timeout();。
setTimeout(function() { ... }, 1000); timeout(1000, function() { });
14:30:46 # Life javascriptの等値判定。 ===とか==がどう違うかなんてひどすぎるよねという話を先日昼飯食べながらした。 あらためてみたが、なんかひどい。 型の自動変換があるので'3' == 3がtrueをかえすらしい。 予想しない挙動をすることがあるので型変換をしない === のほうがよいんじゃないか?
nantoka(function() {}); より nantoka(function namedFunction() {});のほうがbacktraceが見やすいという話とかがどっかにかいてあって なんとなく納得した。anonymous functionばっかりの関数はまったくもって読みにくい。
14:47:54 # Life DebianでNodeJSを入れてみて手を動かしてみてる。 なんかまだ整備されきってない気がするなぁ。 話題にはなっているしいろんな人が試行錯誤しているっぽいけど それがまだ本流の整備に還流していってないような印象。
$Id: 201203.html.ja,v 1.9 2012/03/31 10:54:07 dancer Exp $