资讯专栏INFORMATION COLUMN

什么是闭包,变量的作用域和自执行函数

daydream / 2334人阅读

摘要:作用域和闭包以及自执行函数作用域作用域分为种全局作用域全局作用域就是在的任何位置都能访问过函数作用域只能在函数里面调用的称之为函数作用域闭包嵌套在函数里面的函数及周边的变量叫闭包闭包存在的问题是周边变量不会被释放,常驻内存中闭包的缺点消耗内

作用域和闭包以及自执行函数 作用域 作用域分为2种 1、全局作用域
全局作用域就是在js的任何位置都能访问过
2、函数作用域
只能在函数里面调用的称之为函数作用域
闭包 嵌套在函数里面的函数及周边的变量叫闭包
闭包存在的问题是:周边变量不会被释放,常驻内存中
闭包的缺点:消耗内存
下面我们做一个闭包的示例
在函数中我们调用另一个函数,让第二个函数
/闭包
function test(){
    var b = 2;
   return function(){
        var c = 3;
        console.log(b);
    }
}
var new1 = test();
new1();
打印结果得到的是2
下面我们在调用一次new1()
function test(){
    var b = 2;
    return function(){
        var c = 3;
        console.log(b);
    }
}
var new1 = test();
new1();  new1();
打印的结果是2 2
由此我们得到一个结论,我们要想打印下面这个函数的结果,我们就用闭包做
function test(){
    var b = 2;
}
var new1 = test();
new1();
我们刚才说到闭包存在的问题是:周边变量不会被释放,常驻内存中下面我们举例说明
function test(){
    var b = 2;
   return function(){
        b++            
        console.log(b);
    }
}
var new1 = test();
new1();new1(); 
打印的结果是3 4
我们在调用一个函数
function test(){
    var b = 2;
   return function(){
        b++            
        console.log(b);
    }
}
var new1 = test();
new1();new1(); new1();
现在的输出结果是 3 4 5
自执行函数(立即执行函数) 自执行函数有2中写法
//第一种写法
(function (){
    console.log(1);
})();
//第二种写法
(function (){
    console.log(2)
}()); 
自执行函数也是也是一个闭包
var aa =  (function (){
    var a = 55;
    function test(){
        a++;
        console.log(a);
    }
    return test;
})();
aa();aa();
打印结果56 57
以上就是变量作用域和闭包以及自执行函数的介绍

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/87336.html

相关文章

  • 什么闭包变量作用域和闭包

    摘要:在上面的代码中,函数实际上就是函数的闭包函数,我们让其执行三次,结果分别为。这是因为,函数中的局部变量一直被保存在内存中。所以闭包有个缺点,就是内存占用较大。自执行函数上面这段函数也是闭包的一种。我们利用闭包来做一个小例子。 变量作用域和闭包 变量作用域 当我们写 js 文档的时候经常会设置变量,变量的类型有两种: 全局变量 局部变量 这两种类型的变量有者不同的作用范围,全局变量的...

    U2FsdGVkX1x 评论0 收藏0
  • JavaScript面向对象~ 作用域和闭包

    摘要:大名鼎鼎的作用域和闭包,面试经常会问到。声明理解闭包,先理解函数的执行过程。闭包的基本结构因为闭包不允许外界直接访问,所以只能间接访问函数内部的数据,获得函数内部数据的使用权。 大名鼎鼎的作用域和闭包,面试经常会问到。闭包(closure)是Javascript语言的一个难点,也是它的特色。 声明 理解闭包,先理解函数的执行过程。 代码在执行的过程中会有一个预解析的过程,也就是在代码的...

    WilsonLiu95 评论0 收藏0
  • 图解JS闭包形成原因

    摘要:闭包的出现正好结合了全局变量和局部变量的优点。这就是闭包的一个使用场景保存现场。 前言 什么是闭包,其实闭包是可以重用一个对象,又保护对象不被篡改的一种机制。什么是重用一个对象又保护其不被篡改呢?请看下面的详解。 作用域和作用域链 注意理解作用域和作用域链对理解闭包有非常大的帮助,所以我们先说一下作用域和作用域链 什么是作用域作用域表示的是一个变量的可用范围、其实它是一个保存变量的对象...

    wind3110991 评论0 收藏0
  • 你应该要知道作用域和闭包

    摘要:写在前面对于一个前端开发者,应该没有不知道作用域的。欺骗词法作用域有两个机制可以欺骗词法作用域和。关于你不知道的的第一部分作用域和闭包已经结束了,但是,更新不会就此止住未完待续 这是《你不知道的JavaScript》的第一部分。 本系列持续更新中,Github 地址请查阅这里。 写在前面 对于一个前端开发者,应该没有不知道作用域的。它是一个既简单有复杂的概念,简单到每行代码都有它的影子...

    JouyPub 评论0 收藏0
  • 深入javascript——作用域和闭包

    摘要:注意由于闭包会额外的附带函数的作用域内部匿名函数携带外部函数的作用域,因此,闭包会比其它函数多占用些内存空间,过度的使用可能会导致内存占用的增加。 作用域和作用域链是javascript中非常重要的特性,对于他们的理解直接关系到对于整个javascript体系的理解,而闭包又是对作用域的延伸,也是在实际开发中经常使用的一个特性,实际上,不仅仅是javascript,在很多语言中都...

    oogh 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<