javascript中闭包最简单的简绍

javascript中闭包是什么

JavaScript 变量可以是局部变量或全局变量。私有变量可以用到闭包。闭包就是将函数内部和函数外部连接起来的一座桥梁。

函数的闭包使用场景:比如我们想要一个函数来执行计数功能。

如果设计全局变量

1 var counter=0; 2 function add(){ 3 4 return counter++;}

// add();

在浏览器调用 add();//值为2

问题是如何当我们设计另外一个方法时用到需要counter这个变量,我们在进行修改无疑会改变counter的初始值如下

<script>  var counter=0; 

function add(){  return counter++;} 

function plus(){
              return counter=5;
          }

          plus(); 
</script>  

我们此时在调用add() 值就是6 所以设置counter变量为全局变量的时候我们调用函数会得到不想要的值;

思考?如果使用局部变量

function add(){
var counter=0;
return counter++ ;
}调用add()结果永远是0,函数运行到 counter=0;就覆盖变量;

所以我们需要函数外部可以读取函数变量内部的值,下面就对函数进行了私有化 在 JavaScript 中,所有函数都能访问它们上一层的作用域

JavaScript 支持嵌套函数。嵌套函数可以访问上一层的函数变量。

该实例中,内嵌函数 plus() 可以访问父函数的 counter 变量

  function add() {
            var counter=0 ;
            function plus (){
                counter++;
            }
            plus();
            return counter;
         }

  

闭包的写法

函数的立即执行()() 及函数的声明和函数的执行放在一起

这就是闭包的最终格式

       var plus=(function add() {
            var counter=0;//定义为局部变量
          return  function(){
                counter++;//
             console.log("counter"+counter);
            }
        })()

  调用plus()  ;

闭包就是将函数内部和函数外部连接起来的一座桥梁。

这篇文章https://www.cnblogs.com/lsc-boke/p/6513278.html写了闭包对内存的影响

原文地址:https://www.cnblogs.com/illusory/p/9869927.html

时间: 2024-10-09 17:51:33

javascript中闭包最简单的简绍的相关文章

第二话:javascript中闭包的理解

闭包是什么? 通过闭包,子函数得以访问父函数的上下文环境,即使父函数已经结束执行. OK,我来简单叙述下,先上图. 都知道函数是javascript整个世界,对象是函数,方法是函数,并且js中实质性的面向对象相关也都是函数来实现和延伸,例如:"类". window:是指js中window类,也是js最高一层,因为什么这么说,因为你所有创建的方法和属性其实都在window之内.window中的所有方法,在自己创建的方法中都可以调到.可以仔细想想alert,在任何地方都可以alert,其实

javascript中闭包的原理与用法小结(转)

一.在javaScript中闭包的五种表现形式如下: 1 /** 2 * Created by admin on 2016/12/26. 3 *//* 4 //向函数对象添加属性 5 function Circle(r){ 6 this.r=r; 7 } 8 Circle.prototype.PI=3.1415926; 9 Circle.prototype.area=function(){ 10 return this.PI*this.r*this.r; 11 }; 12 var c=new C

JavaScript中闭包之浅析解读

JavaScript中的闭包真心是一个老生常谈的问题了,最近面试也是一直问到,我自己的表述能力又不能完全支撑起来,真是抓狂.在回来的路上,我突然想到了一个很简单的事情,其实我们在做项目时候,其实就经常用到闭包的,可是面试问的时候,回答又往往是我们经常搜到的答案,唉 不管是应付面试 还是真的想学点东西 ,我也用自己的理解跟大家分享一下,书面化就避免不了了的. 1.闭包是什么? 红宝书中曰:“是指有权访问另外一个函数作用域中的变量的函数.” 简单的说,JavaScript允许使用内部函数---即函数

JavaScript中闭包实现的私有属性的getter()和setter()方法

注意: 以下的输出都在浏览器的控制台中 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>闭包</title> </head> <body> <script type="text/javascript"> /** * 利用闭包实现 * 这个函数给对象o增加了属性存储器方法 * 方法名称为ge

Javascript 中闭包的概念

一直再说闭包闭包,其实自己一直不懂闭包是个什么意思,今天,上百度找了找闭包的相关资料,参考整理了下,希望以后能用得着: 闭包其实是javascript语言中的一个难点,也是该语言的一个特色,据说很多高级应用都需要闭包的支持: 先理解下下面的几个概念: 1.变量的作用域 javascript中声明变量使用var 关键字,稍微了解的同学都知道,加了var关键字声明的变量是局部变量,反之则为局部变量 例如: var text = 'hello';   局部变量 text = 'world'; 全局变量

javascript中闭包的工作原理

一.什么是闭包? 官方”的解释是:闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分.相信很少有人能直接看懂这句话,因为他描述的太学术.其实这句话通俗的来说就是:JavaScript中所有的function都是一个闭包.不过一般来说,嵌套的function所产生的闭包更为强大,也是大部分时候我们所谓的“闭包”.看下面这段代码: 1 2 3 4 5 6 7 function a() { var i = 0; function b() { ale

对JavaScript中闭包的理解

相信很多人都有看过关于闭包的文章,但是真正意义上的了解清楚的也不多,今天我们就来谈谈对闭包的理解. 闭包在JavaScript中一直是一个很重要的存在,闭包很重要但是又很难理解,起初我也是这样认为,但只要真的清楚之后,你会觉得很有趣. 我们先来看一个闭包的例子: 1 function foo() { 2 let a = 2; 3 function bar() { 4 console.log(a); 5 } 6 return bar; 7 } 8 let baz = foo(); 9 baz();

Javascript中 闭包问题

学习Javascript闭包(Closure)闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现.下面就是我的学习笔记,对于Javascript初学者应该是很有用的.一.变量的作用域要理解闭包,首先必须理解Javascript特殊的变量作用域.变量的作用域无非就是两种:全局变量和局部变量.Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量. var n=999; function f1(){ alert(n); } f1()

Javascript中闭包问题(转载)

学习Javascript闭包(Closure) 作者: 阮一峰 日期: 2009年8月30日 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 下面就是我的学习笔记,对于Javascript初学者应该是很有用的. 一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量. var n=999; fu