JavaScript闭包--学习总结

来源:互联网 发布:刷脸开机软件 编辑:程序博客网 时间:2024/06/05 19:03

JavaScript 闭包是前端js迈向高手的必经之路,是js学习的重点,也是难点,究竟闭包是什么?为什么要使用闭包?


闭包:这个术语非常古老,是指函数变量可以被隐藏在作用域链内,因此看起来是函数将变量“包裹起来”。很难懂,简单理解就是读取其他函数内部变量的函数。创建闭包的常见方式就是函数内嵌套函数,将内部函数的运行结果return 。


理解闭包,首先理解什么是作用域链。


作用域链(scope chain) 作用域形成的链条,显著特点是 子作用域可以访问父作用域的变量和函数名,但是父作用域无法访问子作用域的变量和函数名。

var n=999;  function f1(){    alert(n);  }  f1(); // 999
但是,父作用域却无法访问内部作用域的变量和函数名
 function f1(){    var n=999;  }  alert(n); // error
而在js的编程中,很多时候都有外部作用域访问内部作用域的变量和函数名的需求,所以   该如何突破作用域链的限制,实现这样的需求呢?


闭包,就闪亮登场了

看下面这段代码:

function f1(){    var n=999;    function f2(){      alert(n);     }    return f2;  }  var result=f1();  result(); // 999

其中
function f2(){      alert(n);     }
就是闭包,它的作用就是为了外部作用域可以访问内部作用域变量 n ,就是将函数内部与外部连接起来的桥梁。








0 0
原创粉丝点击