(function(){})()===>>>>函数会被立即执行function(){}是一个函数用括号包起来表示是函数表达式再加()表示函数自执行

 如何理解闭包?
1、定义和用法:当一个函数的返回值是另外一个函数,而返回的那个函数如果调用了其父函数内部的其它变量,如果返回的这个函数在外部被执行,就产生了闭包。

2、表现形式:使函数外部能够调用函数内部定义的变量。

3、实例如下:

(1)、根据作用域链的规则,底层作用域没有声明的变量,会向上一级找,找到就返回,没找到就一直找,直到window的变量,没有就返回undefined。这里明显count 是函数内部的flag2 的那个count 。

实例1:

var count=;   //全局作用域 标记为flag1
function add(){
var count=; //函数全局作用域 标记为flag2
return function(){
count+=; //函数的内部作用域
alert(count);
}
}
var s = add() //这样写相当于s就是匿名函数function(){count+=1; alert(count);}
s();//输出1
s();//输出2

解析:add函数的返回值是一个匿名函数,var s=add();这个时候直接输入s就会直接执行function add(){}这个函数,那么就会返回匿名函数function(){count+=1; alert(count);} 这时候再执行一下就会输出匿名函数里面的值

s()=====>>>add()()==>alert(count)

实例2:

函数自我调用闭包

var add = (function () {
var counter = ;
return function () {return counter += ;}
})(); add();
add();
add(); // 计数器为 3

实例解析

变量 add 指定了函数自我调用的返回字值。

自我调用函数只执行一次。设置计数器为 0。并返回函数表达式。

add变量可以作为一个函数使用。非常棒的部分是它可以访问函数上一层作用域的计数器。

这个叫作 JavaScript 闭包。它使得函数拥有私有变量变成可能。

计数器受匿名函数的作用域保护,只能通过 add 方法修改。

最新文章

  1. android Content Provider介绍
  2. 漫谈Linux内核哈希表(1)
  3. 查看mysql表结构的几种方法
  4. ID@Xbox计划宣传片 XboxOne喜迎大波小游戏(转)
  5. jQuery遮罩层的实现
  6. jq获取元素到底部的距离
  7. Step by step guide to set up master and slave machines(转)
  8. 深入探讨 Java 类加载器[转]
  9. JDK源码之PriorityQueue源码剖析
  10. margin、padding单位百分比
  11. (三)ORB特征匹配
  12. Linux Collection:用户管理
  13. Pyjwt ,python jwt ,jwt
  14. 转://Oracle中定义者权限和调用者权限案例分析
  15. JsonParseException:非法的unquoted字符((CTRL-CHAR,代码9)):必须被转义
  16. Redis List数据类型
  17. Codeforces 260D - Black and White Tree
  18. [兼容]——IE 8 常见兼容性问题
  19. 一步一步学习IdentityServer3 (13) 令牌
  20. [Android] 开发第九天

热门文章

  1. [Alpha阶段]第十一次Scrum Meeting
  2. 【学习总结】GirlsInAI ML-diary day-19-面向对象编程
  3. Appium could not connect to server are you sure it's running appium desktop
  4. Java8新特性(一)_interface中的static方法和default方法
  5. Vue.js——vue-resource
  6. 有这iconfont.woff文件 为什么还报404
  7. 浅谈vuex使用方法(vuex简单实用方法)
  8. Elasticsearch 目录总结
  9. 【XSY3345】生成树 并查集
  10. bzoj 3669: [Noi2014]魔法森林 (LCT)