zoukankan      html  css  js  c++  java
  • 什么是javascript闭包?

    在我们开发中,也经常使用到闭包,但当有人问什么是闭包,就会可能说不上来。那就谈谈一些基本的:

    一.理解闭包的概念,

    简单说当function里嵌套function时,内部的function可以访问外部function里的变量,而外部的function不能直接访问内部的function的变量,当你return的是内部function时,就是一个闭包。看下面例子说明:

    1.嵌套的函数可以访问在其外部声明的变量。

     function fn(x) {
          var z = 1;
          function fnc(y) {
            alert(x + y + (++z)); //alert为7
          }
          fnc(2);
        }
        fn(3)
    fnc既可以访问fn的参数x,也能访问到fn的变量z,但这不是闭包。

    2.外部声明的变量下获取到局部变量中的变量

    
    
    function fn(x) {
    var z = 1;
    return function (y) {
    alert(x + y + (++z));//alert为7
    }
    }
    var bar = fn(2); // 现在是一个闭包
    bar(3);

    其实理解起闭包的概念真的费敬,个人理解就是:闭包就是能够读取其他函数内部变量的函数,是将函数内部和函数外部连接起来的桥梁。

     

    二。闭包好处与坏处

     好处:

    1.保护函数内的变量安全 ,实现封装,防止变量流入其他环境发生命名冲突,

    2.匿名自执行函数可以减少内存消耗,在匿名自执行函数传入一个闭包函数,匿名自执行函数执行完立即销毁,可以减小内存消耗。

    坏处:被引用的私有变量不能被销毁,增大了内存消耗,造成内存泄漏。


    了解闭包更详细,请参考链接:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Closures

     

  • 相关阅读:
    171. Excel Sheet Column Number (Easy)
    349. Intersection of Two Arrays (Easy)
    453. Minimum Moves to Equal Array Elements (Easy)
    657. Judge Route Circle (Easy)
    CSS笔记
    保存页面状态
    UI开发总结
    ubuntu 下配置munin
    反向代理配置
    JavaScript 高级程序设计第二版
  • 原文地址:https://www.cnblogs.com/lwming/p/11025578.html
Copyright © 2011-2022 走看看