zoukankan      html  css  js  c++  java
  • Js闭包常见三种用法

        Js闭包特性源于内部函数可以将外部函数的活动对象保存在自己的作用域链上,所以使内部函数的可以将外部函数的活动对象占为己有,可以在外部函数销毁时依然存有外部函数内的活动对象内容,这样做的好处是可以为编程数据获取提供简巧快捷的方式,缺点是占用内存时间过长,容易造成内存泄漏,影响性能。下面是我总结的闭包常见的三种用法:

       一 模仿块级作用域    

      (function(){
              var a=1;
              var i=0;
              var temps=[];
              while(i<10){
                 temps[i]=a+i;
                 a=a+i;
                 i++; 
              }
             console.log(temps); //[1, 2, 4, 7, 11, 16, 22, 29, 37, 46]
           })();
           console.log(i); //undefined
    

      二 函数作为参数传进作为内部函数使用:

      function func1(str){
               var strTotal=str+" loves"+" ";
               return strTotal;
           }
    
          function func2(fn,str2){
          	   var str="Johnharvy";
              return func1(str)+str2;
          }
          console.log(func2(func1,"LouJia xing!")); //Johnharvy loves LouJia xing!
    

     三 返回内部函数,返回的函数中存有外部函数的活动对象:

      function func3(){
               var str="Johnharvy";
               function func4(str2){
               	  return str+" "+"loves"+" "+str2;
               }
               return func4;
          }
          console.log(func3()("LouJia xing!")); //Johnharvy loves LouJia xing!
    

      这里再证明一下函数的参数也是可以被内部函数保存的:

          function func5(str){
            function func6(){
            	alert(str);
            }
            return func6;
          }
          func5("Hai!")();//Hai
    

      

  • 相关阅读:
    JAVA访问权限控制[zhuan]
    Netstat简介
    查看cpu性能和磁盘空间
    简单linux查询
    linux 三剑客命令(grep,sed ,awk)
    同步、异步的使用场景及好处
    AJAX中同步和异步的区别和使用场景
    在SpringBoot中用SpringAOP实现日志记录功能
    springboot使用@Aspect实现AOP记录日志讲解
    Spring:获取容器中的Bean
  • 原文地址:https://www.cnblogs.com/zhu-xingyu/p/5390063.html
Copyright © 2011-2022 走看看