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;}
    };
}

目录
相关文章
|
14天前
|
自然语言处理 JavaScript 前端开发
深入理解JavaScript中的闭包:原理与实战
【10月更文挑战第12天】深入理解JavaScript中的闭包:原理与实战
|
1天前
|
自然语言处理 JavaScript 前端开发
JavaScript闭包:解锁编程潜能,释放你的创造力
【10月更文挑战第25天】本文深入探讨了JavaScript中的闭包,包括其基本概念、创建方法和实践应用。闭包允许函数访问其定义时的作用域链,常用于数据封装、函数柯里化和模块化编程。文章还提供了闭包的最佳实践,帮助读者更好地理解和使用这一强大特性。
9 2
|
17天前
|
设计模式 JavaScript 前端开发
探索JavaScript中的闭包:从基础概念到实际应用
在本文中,我们将深入探讨JavaScript中的一个重要概念——闭包。闭包是一种强大的编程工具,它允许函数记住并访问其所在作用域的变量,即使该函数在其作用域之外被调用。通过详细解析闭包的定义、创建方法以及实际应用场景,本文旨在帮助读者不仅理解闭包的理论概念,还能在实际开发中灵活运用这一技巧。
|
18天前
|
缓存 JavaScript 前端开发
深入了解JavaScript的闭包:概念与应用
【10月更文挑战第8天】深入了解JavaScript的闭包:概念与应用
|
1月前
|
自然语言处理 JavaScript 前端开发
Javascript中的闭包encloure
【10月更文挑战第1天】闭包是 JavaScript 中一种重要的概念,指函数能够访问其定义时的作用域内的变量,即使该函数在其词法作用域之外执行。闭包由函数及其词法环境组成。作用域链和词法作用域是闭包的核心原理。闭包常用于数据隐藏和封装,如模块模式;在异步操作中也广泛应用,如定时器和事件处理。然而,闭包也可能导致内存泄漏和变量共享问题,需谨慎使用。
|
2月前
|
JavaScript 前端开发 API
Vue学习笔记3:对比纯JavaScript和Vue实现数据更新的实时视图显示
Vue学习笔记3:对比纯JavaScript和Vue实现数据更新的实时视图显示
|
14天前
|
自然语言处理 JavaScript 前端开发
深入理解JavaScript中的闭包:原理、应用与代码演示
【10月更文挑战第12天】深入理解JavaScript中的闭包:原理、应用与代码演示
|
15天前
|
自然语言处理 JavaScript 前端开发
深入理解JavaScript闭包:原理与应用
【10月更文挑战第11天】深入理解JavaScript闭包:原理与应用
14 0
|
2月前
|
JSON JavaScript 前端开发
JavaScript第五天(函数,this,严格模式,高阶函数,闭包,递归,正则,ES6)高级
JavaScript第五天(函数,this,严格模式,高阶函数,闭包,递归,正则,ES6)高级
|
2月前
|
缓存 JavaScript 前端开发
了解js基础知识中的作用域和闭包以及闭包的一些应用场景,浅析函数柯里化
该文章详细讲解了JavaScript中的作用域、闭包概念及其应用场景,并简要分析了函数柯里化的使用。
了解js基础知识中的作用域和闭包以及闭包的一些应用场景,浅析函数柯里化