Advertisement

闭包定义和调用及其作用机制

阅读量:

学习笔记的来源为渡一教育所推出的Web前端百大项目课程。

复制代码
    function test() {
    	var arr=[];
    	for(var i=0;i<10;i++){
    		arr[i]=function() {
    			document.write(i+" ");
    		}
    	}
    	return arr;
    }
    var myArr=test();
    for(var j=0;j<10;j++){
    	myArr[j]();
    }
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
    

最终的执行结果为:10个10
这是为何呢?
这是因为产生了闭包,当整个函数运行结束时,变量i的值已变为10。同时,由于函数test仅完成了定义而未立即执行,其具体实现是在函数体外部完成的,因此此时i的值为10。
换句话说:
需要明确的是,函数的实际运行过程始终发生在其定义的具体实现部分。

复制代码
    AO{
    	arr[0]:function (){}
    	arr[1]:function (){}

全部评论 (0)

还没有任何评论哟~