猿问

JS闭包的作用

Js闭包有什么例子

慕侠8885228
浏览 1578回答 2
2回答

winner4265975

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

Samaritan

很早之前写过一篇帖子,不知道能不能帮到你 JavaScript 闭包究竟是什么
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答