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 ,就是将函数内部与外部连接起来的桥梁。
就爱阅读 www.92to.com 网友整理上传, 为您提供最全的知识大全, 期待您的分享,转载请注明出处。
来源: http://www.92to.com/bangong/2017/03-15/18806781.html