zoukankan      html  css  js  c++  java
  • (14)javascript 函数表达式 递归、闭包

    函数表达式

        1 函数声明

        function functionName(){}

        2 函数表达式 //匿名函数

        var functionName = function(){};

        

    递归

      function factorial(num){

        if(num<=1){

        return 1;

        }else{

        return num*factorial(num-1);//return num*arguments.callee(num-1);

        }

      }

    闭包

        1 闭包和变量

      闭包只能取到包含函数中任何变量的组后一个值

    function createFunctions(){

          var result = new Array();

          for(var i=0;i<10;i++){

            result[i] = function(){

              return i;

            };

          return result;

        }//因为每个result[i]返回的都是i,但是i最终的值都是9

    }

      2 内存泄露

      如果在闭包的作用域中保存着一个html元素,那么该元素将无法销毁。

      function assignHandler(){

      var element = document.getElementById("obj");

      element.onclick = function(){}

      }

      由于匿名函数保存了一个assignhandler()的活动对象的引用

      因此导致无法减少element的引用数。只要匿名函数存在,element的引用数至少为1.那就是占用的内存永远不会被回收。

    不过这个问题可以这样解决

      function assignHandler(){

      var element = document.getElement("obj");

      element.onclick = function(){};

      element = null;

    }

      3 模仿块级作用域

      (function(){})();后面的()是代表立即执行

      function add(num){return num;}

      add(4);可以换成(function(){})

  • 相关阅读:
    如何查看openssl支持的所有TLS/SSL版本
    讲故事,学(AHK)设计模式—观察者模式
    React Hooks 详解 【近 1W 字】+ 项目实战
    为什么要在函数组件中使用React.memo?
    js防抖函数
    JS 深度优先遍历与广度优先遍历 实现查找
    你不知道的 requestIdleCallback
    RE:ゼロから始める文化課生活
    开学考小记 & 新生活的开始
    JS中:数组和对象的区别,以及遍历数组和遍历对象的区别
  • 原文地址:https://www.cnblogs.com/lihaozhou/p/3577230.html
Copyright © 2011-2022 走看看