一个JS简单的有关问题

一个JS简单的问题JScript codefunction a(){for(i0i20i++){}}function b(){for(i0i3i++){a()}ret

一个JS简单的问题

JScript code
    function a(){        for(i=0;i<20;i++){        }    }    function b(){        for(i=0;i<3;i++){            a();        }        return i;    }    document.writeln(b());


结果输出是21.求解释下流程,为什么是输出的是a里的i, 不是b里的i

[解决办法]
你那样声明i就是全局变量了,改成下面的你就清楚了

JScript code
    function a() {        for (i = 0; i < 20; i++) {        }    }    function b() {        for (var i = 0; i < 3; i++) {//var申明i变局部            a();        }        return i;    }    document.writeln(b());//b中的局部变量i,输出3    alert(i)//全局变量i
[解决办法]
探讨

让俺来给你详细说说;首先调用b这个是个全局变量,在整个这个script块中都可以使用这个i,首先i=0这时候是小于3的那么将执行a,最后a会执行20次,执行20次过后会最后执行i++这个时候i=20了不满足i《20的条件了,就会又在b()中进行第二次循环,这个时候会进来执行i++因为i已经等于20了,这个时候i++那么i=21了,再去进行i《3的判断,条件不成立,跳出循环,return i;所以……