2012-09-20

http://anond.hatelabo.jp/20120920164222

こういうのを望んでいるなら、不可能。

var i = 10;

[1,2,3, ... ,99,100].each(function(i) {
	// 何かの処理
});

console.log(i); // 10と出て欲しい

jashkenasはこう主張している

if they do clash, shadowing the variable is the wrong answer. It completely prevents you from making use of the original value for the remainder of the current scope. Shadowing doesn't fit well in languages with closures-by-default ... if you've closed over that variable, then you should always be able to refer to it.

衝突が起こるとしても、変数隠蔽(shadowing)は間違った解決法だ。スコープ内のその他のすべての変数に関して、オリジナルの値の利用を完全に塞いでしまう。隠蔽は、クロージャが標準(closures-by-default)な言語にはうまくマッチしない。その変数を閉じ込めているならば、常に参照出来るべきだ。

ソースhttp://www.sixapart.jp/techtalk/2012/01/coffeescript.html

  • そんなに高尚な話なのか? var i = 0;for (var i in points) { console.log(points[i]);console.log(i); Cでfor (i = ...だったらわかるけど、C++やJavaでせっかくfor (int i = ...になったのに

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん