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

JS闭包的作用

JS闭包的作用

慕侠8885228 2017-09-29 09:20:58
Js闭包有什么例子
查看完整描述

2 回答

?
winner4265975

TA贡献19条经验 获得超17个赞

class Teammate {  
      
   public final static String name = "队友";//名称  
      
    private  int num = 5;//数量  
      
    {  
    	System.out.println("王者荣耀五人黑");  
    }  
      
	    /** 
     * 闭包 
     * @return 返回一个表示战斗的匿名内部类 
	     */  
    public Active BeginFight()  {  
        return new Active(){  
            public void fight()  
                {  
                if(num == 0)  
                {  
                        System.out.println("团灭!");  
                    return;  
                }  
                    num--;  
                System.out.println("队友阵亡!");  
            }  
        };  
    }  

    public void currentNum(){  
	        System.out.println(name+"剩余:"+num);  
    }  
}  
  

interface Active  {  
    void fight();  
}  

public class Match {  
  
    public static void main(String[] args) {  
        //来一场比赛 
        Teammate t = new Teammate();  
          
        Active fighting = t.BeginFight();  
          
        //激烈战斗中
        fighting.fight();  
        //激烈战斗中  
        fighting.fight();  
          
        //看看队友还在不?  
        t.currentNum();  
    }  
 
}

java用匿名内部类实现闭包,下面我用JS来实现上面java的代码!

			function match(){
			    var teammates=5;
			    console.log("王者荣耀五人黑");
			    return function(){
			    	teammates--;
			    	console.log("队友剩余:"+teammates+"!");
			    	if(teammates==0)return "团灭";
			        return teammates;
			    }
			}
			var fight=match();
			fight();
			fight();

其实闭包就是可以在作用域外使用作用域里的东西,但是会造成内存泄漏因为有另一个引用指向它所以垃圾回收机制不会清理有引用的变量!

查看完整回答
1 反对 回复 2017-09-29
?
Samaritan

TA贡献61条经验 获得超38个赞

很早之前写过一篇帖子,不知道能不能帮到你 JavaScript 闭包究竟是什么

查看完整回答
反对 回复 2017-09-29
  • 2 回答
  • 2 关注
  • 1577 浏览
慕课专栏
更多

添加回答

举报

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