DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> JavaScript中通過閉包解決只能取得包含函數中任何變量最後一個值的問題
JavaScript中通過閉包解決只能取得包含函數中任何變量最後一個值的問題
編輯:關於JavaScript     
復制代碼 代碼如下:
<script type="text/javascript">
function createArray() {
var arr = new Array();
for (var i = 0; i < 10; i++) {
arr[i] = function () {
return i;
}
}
return arr;
}
var funcs = createArray();
for (var i = 0; i < funcs.length; i++) {
document.write(funcs[i]() + "<br />");
}
//以上輸出全部是i的最後一次的值(10),即會輸出10個10,顯然這不是我們想要的
//原因:因為每個函數都保存了createArray函數的活動對象,所以他們引用的都是同一個i(按引用傳的值)
//解決方案:把按引用傳參修改為按值傳參
function createArray() {
var arr = new Array();
for (var i = 0; i < 10; i++) {
arr[i] = function (num) {
return function () {
return num;
}
} (i);//調用此匿名函數返回內部匿名函數,這裡多了一步按值傳遞參數
}
return arr;
}
var funcs = createArray();
for (var i = 0; i < funcs.length; i++) {
alert(funcs[i]() + "<br />");
}
//以上輸出的為理想結果
</script>
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved