我正在阅读“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)" - 这是两个不同的变量。第三个函数从第二个函数访问变量,而不是从最外面。
我对么?