学习JS闭包
来源:互联网 发布:美国医学PHD 知乎 编辑:程序博客网 时间:2024/05/20 12:46
1.js中变量的作用域有两种:全局变量和局部变量;
2.全局变量在js的任何地方都可以访问
var n=100;
function f(){
document.write(n);
}
f(); //100
3.局部变量在函数外部无法进行访问
function f(){
var n=100;
}
document.write(f()); //报错
在函数内部声明变量要用var ,否则为全局变量
4.怎样能够在外部读取到函数内部的局部变量??
利用闭包:1.什么是闭包?有权访问另一个函数作用域中的变量(不是全局函数,所以不会被污染,但又能始终保存在内存中,可重用)
5.简单闭包例子
function factory(){
var n=1;
return function(){
return n++;
}
}
var icbc=factory();
console.log(icbc());
console.log(icbc());
//调用f2,也可写为factory()()
- 解析代码:在ESC(环境执行栈)中先有一个全局EC引用一个window对象存有全局变量icbc和factory()
- 执行函数factory()时,向ESC中压入函数对象,函数对象的活动对象中存有变量n和函数
- 从图片可以看出icbc引用函数中的内部函数,内部函数的作用域链指向factory的活动对象,活动对象中的变量n被全局变量icbc调用,形成三角关系
6.闭包的缺点
1.闭包会将函数中的变量保存在内存中,内存消耗大,导致内存泄漏
解决:退出函数后释放函数(null)
2.会改变父函数内部变量的值
0 0
- Js闭包 学习
- js闭包学习
- js闭包学习
- 学习JS闭包
- js闭包学习
- 学习JS闭包
- JS学习-闭包
- JS学习之----闭包
- JS闭包学习笔记
- js学习笔记-闭包
- js学习六-闭包
- JS学习(六) ----闭包
- 【great】js函数闭包学习贴
- JS 学习笔记--理解闭包
- 【js学习笔记-048】-- 闭包
- js学习(四)闭包
- js学习笔记之闭包
- 对js闭包的学习
- 231. Power of Two
- 解决 android studio 编译错误 failed to resolve "com.google.zxing"
- 欢迎使用CSDN-markdown编辑器
- MongoDB 支持的数据类型
- nginx负载均衡实践原理
- 学习JS闭包
- 为 Laravel 开发而配置的 Sublime Text 3
- 配置maven
- 自增自减前操作符与后操作符的区别
- 设置JSHint,不要让工具成了绊脚石
- git alias
- JavaScript 字符串处理方法总结
- Pycharm激活码-至November 23,2017
- 创建型设计模式-单例模式