闭包
***代码
//**扩展点
//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.是因为后加加是在语句运行完后再加的。