zoukankan      html  css  js  c++  java
  • 闭包

    闭包的概念:子函数可以调用父函数的局部变量,如果子函数得不到释放,整个作用域链都会保留。处理不好会占内存。

    开始我主要是对一道面试题不理解:

    function say667() {
    var num = 666;
    var sayAlert = function() { alert(num);}
    num++;
    return sayAlert;
    }
    var sayNumba = say667();
    sayNumba();

    分析预解析
    var seyNumba;
    sayNuba=say667();
    function say667(){
      var num,sayAlert;
      num=666;
      sayAlert=function() { alert(num);}
      num++;
      return function(){alert(num);}
    };
    sayNumba=function(){alert(num);}
    sayNumba();
    如果funtion a里面包含function b;a return b;在a的外面,c调用a,就相当于c调用b;,b在被调用,所以a内的东西得不到释放;
    当执行到var sayNumba=say();这句话的时候,say667执行一一遍,num++了,并且将sayAlert赋值给了sayNumba;所以调用sayNumba的时候弹出667了。
  • 相关阅读:
    nginx源码分析——http模块
    linux 信号处理
    文件读写监控(inotify, systemtap)
    rem
    vscode 将本地项目上传到码云
    vue 模拟去哪网
    form 文件上传
    分页
    修改默认select样式
    模拟select下拉框、复选框效果
  • 原文地址:https://www.cnblogs.com/learnings/p/5808895.html
Copyright © 2011-2022 走看看