这次给大家带来基础的javascript知识总结,总共有十一个知识点,基础的javascript知识总结(十)闭包、立即执行函数下面就是实战案例,一起来看一下。
//例子function a() { function b(){ var bbb = 234; console.log(aaa) } var aaa = 123; return b;}var glob = 100;var demo = a();demo();
登录后复制
首先这个函数在执行return b之后,函数就a执行完了,会销毁a的AO,,但是在销毁之前函数b被保存出来了,所以b的执行期上下文并没有被销毁。
所以b的AO、Go都被保存出来了
这样就形成了闭包,也可以这样说:内部函数被保存到了外部,一定形成闭包
function a (){ var num = 100; function b(){ num ++; console.log(num); } return b;}var demo = a();demo();//打印101demo();//打印102
登录后复制
闭包的概念 : 当内部函数保存到外部时,将会生成闭包。闭包会导致原有作用域链不释放,造成内存泄漏(内存占用)
立即学习“Java免费学习笔记(深入)”;
内存泄露 : 举个例子….一个杯子…你往里面到的水越多,他的内存越少(同理,你内存占的越多,他的内存越少)
闭包的作用
实现公有变量
函数累加器
可以做缓存(存储结构)
eater
可以实现封装,属性私有化
Person()
模块化开发,防止污染全局变量
1、累加器上述例子已经写了
2、可以做缓存(存储结构)
function test(){ var num = 100; function a(){ num ++; console.log(num); }; function b(){ num --; console.log(num); }; return [a,b]}var myArr = test();myArr[0]();//打印101myArr[1]();//打印100function eater(){ var food = ""; var obj ={ eat : function(){ console.log("i am eating" + food) }, push : function (myFood){ food = myFood; } } return obj;}var eater1 = eater();eater1.push('banana');eater1.eat();//打印出 i am eating banana
登录后复制
上面的这个例子我在eater1.push(‘banana’)之后就给了eater里面的foot = “”,变成了food = “banana”。我在执行eater1.eat()之后就变成了拿到food = “banana” ,他们操作的都是同一个闭包,所以打印出i am eating banana,这个foot就相当于一个隐式的存储结构一样,这个就是缓存的应用
给自己买个坑,属性私有化,在我写完对象之后在解释,模块化开发也一样
立即执行函数
此类函数没有声明,在一次执行后即释放。适合做初始化工作。
function a(){ }function b(){ }
登录后复制
我定义两个函数,这两个函数除非等到我JavaScript执行完,否则这两个函数永远都不的释放,永远等待被执行,等待被执行就占空间。
作用 : 针对初始化功能的函数
(function (aaa,bbb,ccc){ var a = 234; var b = 123; var c = a+b; console.log(c) return c}(1,2,3))执行完立即被销毁// 怎么去接收他var num = (function (aaa,bbb,ccc){ var a = 234; var b = 123; var c = a+b; console.log(c) return c}(1,2,3))立即执行函数有两种写法//第一种(function(){}());//w3c 建议第一种//第二种(function(){})();扩展只有表达式才可以被执行符号执行var test = function (){}()//也可以被执行+ function test(){}()//也可以被执行 以此类推- !号也可以function test(){ console.log(a+b+c+d)}(1,2,3,4)//不执行也不报错
登录后复制
相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!
相关阅读:
基础的JavaScript知识总结(九)作用域、作用域链精解
基础的JavaScript知识总结(八)预编译执行过程
基础的JavaScript知识总结(七)递归
以上就是基础的JavaScript知识总结(十)闭包、立即执行函数的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2784148.html