「Javascript: The Good Parts」の本でクロージャーについて読んでいます。
クロージャーを使用する次の例があります。
var add_the_handlers = function (nodes) {
var i;
for (i = 0; i < nodes.length; i += 1) {
nodes[i].onclick = function (i) {
return function (e) {
alert(i + ":" + e);
};
}(i);
}
};
正しい例ですか?または、多くの正しい例は次のようになりますか?
var add_the_handlers = function (nodes) {
var i;
for (i = 0; i < nodes.length; i += 1) {
nodes[i].onclick = function (idx) {
return function (e) {
alert(idx + ":" + e);
};
}(i);
}
};
外部関数の変数 i と内部関数の変数 i "nodes[i].onclick = function (i)" - 2 つの異なる変数です。そして、3 番目の関数は、最も外側からではなく、2 番目の関数から変数にアクセスします。
私は正しいですか?