不負(fù)相思意
2018-11-13 13:13:43
下面這段代碼,我以為會(huì)輸出1-10,結(jié)果輸出的是5,而且不停地輸出5,是個(gè)死循環(huán),想不明白,求大神賜教。謝謝!function initloop() { function doLoop(x) { i = 3; console.log(x); } for (var i = 0; i < 10; i++) { doLoop(i + 1); }}initloop();
1 回答

小怪獸愛吃肉
TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊
那個(gè) i 其實(shí)相當(dāng)于是在 initloop 里聲明的.
function initloop() {
var i = 0;
function doLoop(x) {
i = 3;
console.log(x);
}
for ( ; i < 10; i++) {
doLoop(i + 1);
}
}
initloop();
這樣看, 你腦補(bǔ)一下函數(shù)執(zhí)行過程, 應(yīng)該就明白了.
每次循環(huán), i 都會(huì)在 doloop 里被修改成 3,
doloop 執(zhí)行結(jié)束后, 執(zhí)行 i++, 這時(shí)傳入 loop 的實(shí)參應(yīng)該就是 4 + 1;
所以 console 先是1, 然后一直死循環(huán)輸出 5.
想要按你的想法輸出 1 - 10, doloop 里的 i 加上 var.讓它成為局部變量.
添加回答
舉報(bào)
0/150
提交
取消