javascript中闭包学习笔记

简介:           闭包,从代码的形式上是在函数声明的内部声明另一个函数,从功能上讲,闭包是一种具有状态的函数,函数内的局部变量在函数调用后仍然有效。

          闭包,从代码的形式上是在函数声明的内部声明另一个函数,从功能上讲,闭包是一种具有状态的函数,函数内的局部变量在函数调用后仍然有效。下面是一个闭包的简单的例子:

       

function f(){
      var cnt =  0;
      return function(){ return ++cnt;}
}
var fn=f();     //将函数的返回值赋给变量
fn();
fn();
fn();
     上面fn(); 的三次调用输出的分别是 1,2,3,这就说明f()在被调用后其局部变量仍然存在。

     闭包的作用:

    1、闭包实现访问器

    

function obj(){
      var  _x = 0;    
 
      // 返回一个定义了访问器的对象
     return  { get x() { return _x;},
               set x(v) {_x =v;}
             };
}


     2、闭包实现信息隐藏

    

var obj = (function(){
            //私有变量
            var position = {x:2,y:3};
           //私有函数
            function sum_internal(a,b){
                     return Number(a)+Number(b);
            }

            return{
                   sum:function(a,b){ return sum_internal(a,b);},
                   x:position.x
                  };
            }
      )();


    3、使用闭包实现计数器功能的类

function counter_class(i){
      var cnt = i || 0;       //设置默认参数
      //在此声明私有变量,私有函数
    return {
             //公有方法
            show:function(){ return cnt;},
            //return this便于使用方法链
            up:function(){cnt++; return this;},
            down:function(){cnt--; return this;}
    };
}

目录
相关文章
|
4月前
|
JavaScript 前端开发
JavaScript 闭包:让你更深入了解函数和作用域
JavaScript 闭包:让你更深入了解函数和作用域
|
2天前
|
Web App开发 前端开发 JavaScript
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
|
1月前
|
JavaScript 前端开发 安全
详细讲解JavaScript中的闭包问题附代码演示
闭包是JavaScript中一关键概念,它允许内部函数访问外部函数的作用域,从而实现变量的封装与持久化。本文通过示例解释了闭包的工作原理及其优势,如数据隐藏和私有变量的实现;同时也指出了闭包可能导致的内存占用问题,强调合理使用的重要性。
21 1
|
1月前
|
JavaScript 前端开发 Java
JavaScript中的闭包概念讲解
闭包是指函数内部嵌套另一个函数,并且内部函数引用了外部函数的数据(如变量或函数)。这样的内部函数被称为闭包。以示例代码为例,`fn1` 中有两个闭包函数 `fn2` 和 `fn3`,它们都可以访问并修改 `fn1` 中的变量 `a`。
12 1
|
11天前
|
自然语言处理 JavaScript 前端开发
|
20天前
|
自然语言处理 前端开发 JavaScript
前端进阶必读:JS闭包深度解析,掌握这一特性,你的代码将焕然一新!
【8月更文挑战第23天】闭包是JavaScript的一项高级功能,让函数能够访问和操作外部函数作用域中的变量。本文深入解析闭包概念、组成及应用场景。闭包由函数及其词法环境构成,通过在一个函数内定义另一个函数来创建。它有助于封装私有变量、维持状态和动态生成函数。然而,不当使用闭包可能导致内存泄漏或性能问题。掌握闭包对于实现模块化代码和成为优秀前端开发者至关重要。
29 0
|
30天前
|
JavaScript 前端开发 安全
JS 闭包(1)
JS 闭包(1)
23 0
|
30天前
|
JavaScript Java
JS 闭包
JS 闭包
21 0
|
30天前
|
存储 JavaScript 前端开发
JavaScript——对闭包的看法,为什么要用闭包?说一下闭包原理以及应用场景
JavaScript——对闭包的看法,为什么要用闭包?说一下闭包原理以及应用场景
28 0
|
3月前
|
自然语言处理 JavaScript 前端开发
JavaScript闭包是函数访问外部作用域变量的能力体现,它用于封装私有变量、持久化状态、避免全局污染和处理异步操作。
【6月更文挑战第25天】JavaScript闭包是函数访问外部作用域变量的能力体现,它用于封装私有变量、持久化状态、避免全局污染和处理异步操作。闭包基于作用域链和垃圾回收机制,允许函数记住其定义时的环境。例如,`createCounter`函数返回的内部函数能访问并更新`count`,每次调用`counter()`计数器递增,展示了闭包维持状态的特性。
42 5