我在閱讀「Javascript:The Good Parts」一書中有關關閉的內容。「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] .onclick =函數(I)」 外部函數和變量i - 這是兩個不同的變量。 第三個函數從第二個函數訪問變量,而不是從最外層訪問變量。
我正確嗎?
兩個版本都做同樣的事情。在我看來,你的版本更易於閱讀,因爲變量名稱不同。一般來說,當您在不同範圍內具有相同名稱的變量時,將使用的變量是最接近(或在)當前範圍內定義的變量。 – nnnnnn