js求助高手

来源:百度知道 编辑:UC知道 时间:2024/07/02 02:07:06
function counter(start,step){
return function(){
start += step;
return start;
}
}
var test = counter(0,1);
for(var i=0;i <5;++i){
this.document.write(test()+"\r\n");
}

谁给我说说这个的执行过程吧。
看到关键处没了。。。
test() 循环5次时start 和 step的值是怎么变化的?

function counter(start,step) 为定义的函数,只有使用时才触发
因此当网页打开时
首先执行var test=counter(0,1)
这个时候 因为调用了函数 counter(0,1) 则执行function部分,将 function(){ start += step; return start; } 赋给test 同时定义初始化 start=0 和step的值。
start+=step 等价于start=start+step
return start 将start值返回
这个时候执行完function 则继续从调用函数位置向下执行
即开始执行for 循环 循环5次
this.document.write 输出
test() 因为循环5次 每次都调用一次 所以start 也就会每次在原有基础上加上step的值 也就是加1
因此会出现 1 2 3 4 5