为了账号安全,请及时绑定邮箱和手机立即绑定

求分析 | 这段 JavaScript 代码的输出为什么是 5 ?

求分析 | 这段 JavaScript 代码的输出为什么是 5 ?

不负相思意 2018-11-13 13:13:43
下面这段代码,我以为会输出1-10,结果输出的是5,而且不停地输出5,是个死循环,想不明白,求大神赐教。谢谢!function initloop() {    function doLoop(x) {        i = 3;        console.log(x);    }    for (var i = 0; i < 10; i++) {        doLoop(i + 1);    }}initloop();
查看完整描述

1 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

那个 i 其实相当于是在 initloop 里声明的.

function initloop() {

    var i = 0;

    function doLoop(x) {

        i = 3;

        console.log(x);

    }

    for ( ; i < 10; i++) {

        doLoop(i + 1);

    }

    

}


initloop();

这样看, 你脑补一下函数执行过程, 应该就明白了.
每次循环, i 都会在 doloop 里被修改成 3, 
doloop 执行结束后, 执行 i++, 这时传入 loop 的实参应该就是 4 + 1;
所以 console 先是1, 然后一直死循环输出 5.
想要按你的想法输出 1 - 10, doloop 里的 i 加上 var.让它成为局部变量.

查看完整回答
反对 回复 2018-12-07
  • 1 回答
  • 0 关注
  • 540 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信