国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript中通過閉包解決只能取得包含函數中任何變量最后一個值的問題

2019-11-21 00:18:09
字體:
來源:轉載
供稿:網友
復制代碼 代碼如下:

<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>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 县级市| 商都县| 巴塘县| 聂拉木县| 株洲县| 称多县| 南皮县| 神农架林区| 通渭县| 冕宁县| 涿州市| 海城市| 洛南县| 巴林左旗| 刚察县| 乌苏市| 景谷| 卓资县| 绥阳县| 黄骅市| 阳新县| 许昌市| 拉萨市| 武夷山市| 安福县| 广河县| 西贡区| 白河县| 京山县| 定边县| 富蕴县| 随州市| 蕉岭县| 东明县| 运城市| 横山县| 广昌县| 阿坝县| 阿克陶县| 辉南县| 珲春市|