zoukankan      html  css  js  c++  java
  • 闭包的特性(只做了粗略整理)

    一、概念

    闭包是有权访问另一个函数作用域中变量的函数

    自己的理解:它主要是利用windows才是匿名函数功能执行的环境的特性,通过在函数体内创建匿名函数,然后返回函数的方式,将原本本应该在函数体内执行完就销毁的变量保存了下来,这些被保存下来的变量,会一直存在,直到闭包不存在为止,当然也可以通过闭包名=null来释放掉闭包

    二、闭包的特性

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

    function arrFunc(){
         var arr=[];
         for(var i = 0;i<10;i++){
             arr[i] = function(){
                return i;
             };
        }
        return arr;   //输出10个10,原因是:arrFunc执行完后,其作用域被销毁,但它的变量对象仍保存在内存中,可以被匿名函数访问到
    }        

    修改:

    function arrFunc(){
         var arr=[];
         for(let i = 0;i<10;i++){  //let是块级作用域,i为0时,执行完毕就销毁了
             arr[i] = function(){
                return i;
             };
        }
        return arr;   
    }

    3、闭包会造成的问题

    内存常驻、内存泄漏

    4、闭包的应用:

    设置私有变量

    5、实现add(1)(2)(3)

    function sum(a){
            return function(b){
                  return function(c){
                        return a+b+c;
                  }
            }
    }
  • 相关阅读:
    02作业
    作业01
    10-C++远征之模板篇-学习笔记
    9-C++远征之多态篇-学习笔记
    8-C++远征之继承篇-学习笔记
    C++远征之封装篇(下)-学习笔记
    6-C++远征之封装篇[上]-学习笔记
    C++远征离港篇-学习笔记
    4-c++教程起航篇-学习笔记
    Linux C语言结构体-学习笔记
  • 原文地址:https://www.cnblogs.com/GinaHan/p/11659975.html
Copyright © 2011-2022 走看看