首页 > Web开发 > 详细

(14)javascript 函数表达式 递归、闭包

时间:2014-03-03 16:16:40      阅读:425      评论:0      收藏:0      [点我收藏+]

函数表达式

    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(){})

(14)javascript 函数表达式 递归、闭包,布布扣,bubuko.com

(14)javascript 函数表达式 递归、闭包

原文:http://www.cnblogs.com/lihaozhou/p/3577230.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!