もうひとつ思い出したのでメモ
とりあえず例
(function(){ for(var i = 0; i < 3; i++){ setTimeout(function(){ console.log(i); }, (i * 1000)); } })();
とやると 3 が3回出てきてしまいます。本来なら i を3回出したい、つまりは 0, 1, 2 と出したいものの、スコープチェーンから言って当たり前ですが、 3 が3回出てしまいます。こんなときはwithを使う
(function(){ for(var i = 0; i < 3; i++){ with({i:i}){ setTimeout(function(){ console.log(i); }, (i * 1000)); } } })();
そんだけ。もうこのネタも古くなった…