javascript中闭包是什么

JavaScript 变量可以是局部变量或全局变量。私有变量可以用到闭包。闭包就是将函数内部和函数外部连接起来的一座桥梁。
函数的闭包使用场景:比如我们想要一个函数来执行计数功能。
如果设计全局变量
  var counter=0; function add(){ 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写了闭包对内存的影响
 

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

  1. 在JavaScript中闭包的作用和简单的用法

    在JavaScript中闭包的作用和简单的用法 一.闭包的简介 作用域链:在js中只有函数有作用域的概念,由于函数内能访问函数外部的数据,而函数外部不能访问函数内部的数据,由上述形成一种作用域访问的链 ...

  2. 在Javascript中闭包(Closure)

    在Javascript中闭包(Closure) 什么是闭包 “官方”的解释是:所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分. ...

  3. JavaScript中闭包之浅析解读

    JavaScript中的闭包真心是一个老生常谈的问题了,最近面试也是一直问到,我自己的表述能力又不能完全支撑起来,真是抓狂.在回来的路上,我突然想到了一个很简单的事情,其实我们在做项目时候,其实就经常 ...

  4. 浅谈JavaScript中闭包

    引言 闭包可以说是JavaScript中最有特色的一个地方,很好的理解闭包是更深层次的学习JavaScript的基础.这篇文章我们就来简单的谈下JavaScript下的闭包. 闭包是什么? 闭包是什么 ...

  5. javascript中闭包的概念

    这个是每个前端工程师绕不开的一个问题,网上各种资料很多,整个春节,我仔细研读了红皮经典中关于这一块的注释,加深了对这一块的理解. 有好几个概念需要重申一下.以下都是我的理解: 1. 闭包是javasc ...

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

    注意: 以下的输出都在浏览器的控制台中 <!DOCTYPE html> <html> <head> <meta charset="utf-8&quo ...

  7. JavaScript 中 闭包 的详解

    闭包是什么 在 JavaScript 中,闭包是一个让人很难弄懂的概念.ECMAScript 中给闭包的定义是:闭包,指的是词法表示包括不被计算的变量的函数,也就是说,函数可以使用函数之外定义的变量. ...

  8. Javascript中闭包的个人理解

       Javascript的一个特殊点就在于它的闭包和回调特性,这两个特性让初学Javascript的我是云里雾里,至今仍在苦苦摸索与理解.在一番苦思之后,整理了一下资料,将自己的理解思路记录下来,以 ...

  9. JavaScript中闭包的使用和各种继承介绍

    一.什么是闭包?     (1)闭包的概念:a.闭包就是函数嵌套时,让局部变量变成自由变量的环境,是一种让局部变量进化的方式.                 b.定义在一个函数内部的函数.      ...

随机推荐

  1. linux安装scala环境

    (安装scala的前提是已经安装好了jdk) 1.下载scala的安装包 wget https://scala-lang.org/files/archive/scala-2.11.0-M2.tgz 2 ...

  2. IECapt、CutyCapt 生成网页快照

    IECapt.CutyCapt  生成网页快照 http://iecapt.sourceforge.net/ http://cutycapt.sourceforge.net/ 1.以管理员身份 运行c ...

  3. 初学struts2框架

    昨天初学strts2,折腾了一晚上才正好一个简单的应用程序,在这个过程中遇到了很多的问题. 1. struts2的更新太快,所以从图书馆借的书常常会跟不上变化,所以有时执行起来会很麻烦. 2. 如果你 ...

  4. 前端视频插件Aliplayer播放器简单使用(基于地址播放)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  5. linux中pipe和dup2详解

    1.什么是管道 管道是半双工的,数据只能向一个方向流动:需要双方通信时,需要建立起两个管道: 只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程): 单独构成一种独立的文件系统:管道对于管道两端的进 ...

  6. 【转载】SSAS-MDX#001 - MDX 基本结构

    1. MDX 的基本结构 - MDX 的基本结构有三种: Members, Tuple 和 Set    2. Members - 指的是维度树上的一个节点, 这里有一点需要指出, 量度也是一个特殊的 ...

  7. User类 新增共有属性Current ID

    一.题目描述 每个用户有用户编号(id),用户名(name),密码(passwd)三个属性.其中: 用户编号(id)由系统自动顺序编号,用户名和密码都是字母.数字.符合的组合,新用户密码,默认“111 ...

  8. c# 操作excle[转]

    //引用Microsoft.Office.Interop.Excel.dll文件 //添加using using Microsoft.Office.Interop.Excel; using Excel ...

  9. Java LinkedHashMap 逆序遍历

    利用 ListIterator<pre name="code" class="java">previous import java.util.Arr ...

  10. 部署herko小记

    1 先执行如下 heroku run rake db:migrate