博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js闭包
阅读量:5882 次
发布时间:2019-06-19

本文共 841 字,大约阅读时间需要 2 分钟。

闭包

 ***代码

 

//**扩展点

//1.函数的特点: 函数运行后函数内分配的变量都会销毁,除非有返回值的变量才不会销毁
//2.js中由于链式作用域,子对象会一级一级地向上寻找所有父对象的变量。父对象的所有变量,对子对象都是可见的,反之就不行。
//3.函数声明时间,作用域就决定过了,所以不取决于它执行的时候,只取决于它声明的时候,这就是19行弹出来的是1,而不会是10了;

//**闭包的概念:
// 所谓的闭包并不是函数包含函数,闭包是形成了一个封闭的环境,闭包就是能够读取其他函数内部变量的函数
//,闭包可以是函数的内部和外部连接的桥梁,任何函数都会形成自己的闭包环境,都有自己的AO链.

//**闭包的作用
// 1.一个是可以读取函数内部的变量
// 2.另一个就是让这些变量的值始终保持在内存中

//**闭包注意的问题
// 话题:代码中a是c的父函数,而c被赋给了一个全局变量(指的是在window中了),
// 这导致c始终在内存中,而c的存在依赖于a,因此a也始终在内存中,不会在调用结束后,
// 被垃圾回收机制(garbage collection)回收;
// 1.所以导致的问题是内存消耗太大,造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,
// 将不使用的局部变量全部删除。
// 2.闭包会在父函数外部,改变父函数内部变量的值。如果你把父函数当作对象(object)使用,把闭包当作它的公用方法,把内部变量当作它的私有属性,这时一定要小心,
// 不要随便改变父函数内部变量的值。

//**闭包和对象
// 闭包是穷人的对象,对象是穷人的闭包,闭包和对象只是实现的方式不同罢了;
//知识点:
//19行函数调用会弹出1,有两个回答:
//1.是**扩展点3中提到的.
//2.是因为后加加是在语句运行完后再加的。

 

转载于:https://www.cnblogs.com/zhuzhu88/p/6675168.html

你可能感兴趣的文章
HashMap----工作原理
查看>>
nodejs 安装 postgresql module
查看>>
【转】iOS学习之iOS禁止Touch事件
查看>>
【小记录】解决链接libcufft_static.a库出现的错误
查看>>
两列布局的几种实现方案
查看>>
Java8新特性之Collectors
查看>>
怎么用CorelDRAW制作表格
查看>>
eclipse智能配置
查看>>
安装Scrapy遇到的问题处理
查看>>
个人作业——软件产品案例分析
查看>>
Java学习:方法重载的使用规则
查看>>
ASP.NET MVC 防止CSRF攻击
查看>>
EF:无法检查模型兼容性,因为数据库不包含模型元数据。
查看>>
0和5
查看>>
C# WinFrom一些技术小结
查看>>
hdu5001 Walk 概率DP
查看>>
模拟select控件&&显示单击的坐标&&用户按下键盘,显示keyCode
查看>>
Mac-OSX下Ruby更新
查看>>
jsp九个内置对象
查看>>
[Python笔记][第一章Python基础]
查看>>