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

     

  • 相关阅读:
    PHPCMS模型
    SQL 根据中文分词组件来搜索表
    初识wordpress
    session_set_save_handler
    使用Sharepoint 中Webservice得到用户列表
    鸡蛋里挑骨头PHPCMS
    Type: FileNotFoundException, Exception Message: 未能加载文件或程序集
    很实用的Jquery验证插件
    CSS link media属性
    OCS (错误代码: 01492)
  • 原文地址:https://www.cnblogs.com/lwming/p/11025578.html
Copyright © 2011-2022 走看看