選項1閉合問題:試圖瞭解JS
function addLinks() {
for (var i=0, link; i<5; i++) {
link = document.createElement("a");
link.innerHTML = "Link " + i;
link.onclick = function() {
alert(i);
};
document.body.appendChild(link);
}
}
window.onload = addLinks;
選項2:
function addLinks() {
for (var i=0, link; i<5; i++) {
link = document.createElement("a");
link.innerHTML = "Link " + i;
link.onclick = function (num) {
return function() {
alert(num);
};
}(i);
document.body.appendChild(link);
}
}
window.onload = addLinks;
我知道選項1:將輸出5每當你點擊,因爲封閉的,但選擇2將輸出正確的結果,0,1,2 ...
我的問題是:如何選項2解決問題?選項2如何工作?
你可能想看看這個[SO問題](http://stackoverflow.com/questions/111102/how-do-javascript-closures-work)。它有很多有用的答覆,可以幫助您瞭解關閉工作的方式。 – excentris
這可能對你有幫助 http://stackoverflow.com/questions/111102/how-do-javascript-closures-work?rq=1 –