javascript闭包学习
2024-10-18 01:01:21
(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 方法修改。
最新文章
- android Content Provider介绍
- 漫谈Linux内核哈希表(1)
- 查看mysql表结构的几种方法
- ID@Xbox计划宣传片 XboxOne喜迎大波小游戏(转)
- jQuery遮罩层的实现
- jq获取元素到底部的距离
- Step by step guide to set up master and slave machines(转)
- 深入探讨 Java 类加载器[转]
- JDK源码之PriorityQueue源码剖析
- margin、padding单位百分比
- (三)ORB特征匹配
- Linux Collection:用户管理
- Pyjwt ,python jwt ,jwt
- 转://Oracle中定义者权限和调用者权限案例分析
- JsonParseException:非法的unquoted字符((CTRL-CHAR,代码9)):必须被转义
- Redis List数据类型
- Codeforces 260D - Black and White Tree
- [兼容]——IE 8 常见兼容性问题
- 一步一步学习IdentityServer3 (13) 令牌
- [Android] 开发第九天
热门文章
- [Alpha阶段]第十一次Scrum Meeting
- 【学习总结】GirlsInAI ML-diary day-19-面向对象编程
- Appium could not connect to server are you sure it's running appium desktop
- Java8新特性(一)_interface中的static方法和default方法
- Vue.js——vue-resource
- 有这iconfont.woff文件 为什么还报404
- 浅谈vuex使用方法(vuex简单实用方法)
- Elasticsearch 目录总结
- 【XSY3345】生成树 并查集
- bzoj 3669: [Noi2014]魔法森林 (LCT)