基础的JavaScript知识总结(十)闭包、立即执行函数

这次给大家带来基础的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

(0)
上一篇 2025年3月8日 17:01:10
下一篇 2025年3月8日 17:01:18

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 基础的JavaScript知识总结(十一)对象,包装类

    这次给大家带来基础的javascript知识总结,总共有十一个知识点,基础的javascript知识总结(十一)对象,包装类下面就是实战案例,一起来看一下。 对象 属性的增,删,改,查 对象的创建方法 字面量 立即学习“Java免费学习笔记…

    编程技术 2025年3月8日
    200
  • commonJS与es6规范的引入导出

    这次给大家带来commonjs与es6规范的引入导出,commonjs与es6规范的引入导出的注意事项有哪些,下面就是实战案例,一起来看一下。 index.js中定义: var info = { name = ‘sisi’ }; 登录后复制…

    编程技术 2025年3月8日
    200
  • js数据类型的转换实例

    本文主要和大家分享js数据类型的转换实例,希望能帮助到大家。 基本数据类型 把其他数据类型转换为number类型 isNaN、Number、parseInt、parseFloat 在进行加减乘除数学运算的时候 true -> 1 fa…

    编程技术 2025年3月8日
    200
  • 利用js获取checkbox的value值

    本文主要和大家分享利用js获取checkbox的value值,希望能帮助到大家。 显示的内容显示的内容显示的内容显示的内容….JS:function send(){    var id = document.getElementsByN…

    编程技术 2025年3月8日
    200
  • js打乱数组顺序详解

    本文主要和大家分享js打乱数组顺序详解,有俩种方法,希望能帮助到大家。     //方法一:也是最简单的方法    var arr=[];    for(var i=0;i//方法二: Fisher–Yates洗牌算法var arr = n…

    编程技术 2025年3月8日
    200
  • AngularJS发起$http.post请求实例分享

    本文主要和大家分享AngularJS发起$http.post请求实例,希望能帮助到大家。 代码如下: $http({      method:’post’,      url:’post.php’,      data:{name:”aaa…

    编程技术 2025年3月8日
    200
  • js中自定义format格式化输出实例

    在使用js的时候,经常要进行字符串的拼接,一但使用+号进行字符串拼接的时候,基本是各种问题,又不好维护,有没有更好的方法地其进行格式化输出呢?答案肯定是有的,如果你使用nodejs,它已经自带的,如果你还在使用纯原生js,那不好意思了。 使…

    编程技术 2025年3月8日
    200
  • 用node.js做简介的网站

    这次给大家带来用nodejs做简介的网站,用nodejs做网站的注意事项有哪些,下面就是实战案例,一起来看一下。 首先你要有nodejs环境和会使用npm,不会自行Google或百度。(相关推荐:Node.js视频教程) ok!开始吧! 第…

    编程技术 2025年3月8日
    200
  • js如何删除数组里的某个元素

    js如何删除数组里的某个元素,本文主要和大家分享js删除数组里的某个元素的方法实例。 首先可以给js的数组对象定义一个函数,用于查找指定的元素在数组中的位置,即索引,代码为: Array.prototype.indexOf = functi…

    编程技术 2025年3月8日
    200
  • 怎样使用JavaScript保存文本数据

    这次给大家带来怎样使用javascript保存文本数据,使用javascript保存文本数据的注意事项有哪些,下面就是实战案例,一起来看一下。 JavaScript保存文本数据示例,当然不仅仅是文本其他类型的也是可以的 首先上代码 nbsp…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论