[問題] 關於closure傳入的變數
在網路上看到一個例子,
但一直覺得很困惑,
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;
為何onclick的觸發函式是宣告成:
function(num) {
return function() {
alert(num);
}
}
但實際上觸發時,並不會代入任何參數,
而且num沒被宣告過,alert時應該是沒有東西?
為何不是寫成如下:
function(i) {
return function() {
alert(i);
}
}
但實際測試的結果,兩者結果都是相同的,
會利用closure的特性,將當下的i暫存起來,
今晚想破頭就是為這題 冏rz
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.173.227.21
推
01/06 02:12, , 1F
01/06 02:12, 1F
→
01/06 02:12, , 2F
01/06 02:12, 2F
→
01/06 02:13, , 3F
01/06 02:13, 3F
→
01/06 02:14, , 4F
01/06 02:14, 4F
→
01/06 02:15, , 5F
01/06 02:15, 5F
→
01/06 02:15, , 6F
01/06 02:15, 6F
→
01/06 02:16, , 7F
01/06 02:16, 7F
→
01/06 02:18, , 8F
01/06 02:18, 8F
→
01/06 02:18, , 9F
01/06 02:18, 9F
→
01/06 02:19, , 10F
01/06 02:19, 10F
→
01/06 02:29, , 11F
01/06 02:29, 11F
→
01/06 02:30, , 12F
01/06 02:30, 12F
推
01/06 02:31, , 13F
01/06 02:31, 13F
→
01/06 02:32, , 14F
01/06 02:32, 14F
→
01/06 03:04, , 15F
01/06 03:04, 15F
Ajax 近期熱門文章
PTT數位生活區 即時熱門文章