摘要:写文章之前,查阅了很多的资料,也看了很多大牛对闭包的解释,现在总算是对闭包有了一定的理解。那么如果我们要访问中的该怎么办呢这个时候就需要引入闭包了。闭包的作用闭包除了能访问函数内部的局部变量,还有一个作用就是将函数内部的变量值储存到内存中。
写文章之前,查阅了很多的资料,也看了很多大牛对闭包的解释,现在总算是对闭包有了一定的理解。
作用域可能你会问:明明是讲闭包,为什么又讲作用域了? 在理解闭包之前我们首先要明白JavaScript中变量作用域的概念,我们都知道JavaScript的变量分为局部变量和全局变量,比如:
var global = 1; function f1() { var local = 2; console.log(global ) // 1 console.log(local) // 2 } console.log(global ) // 1 console.log(local) // local is not defined
在上面示例中global是全局变量,因此可以在任何地方访问它,而local是定义在函数f1()中的局部变量,因此只能在f1()中访问。那么如果我们要访问f1()中的local该怎么办呢? 这个时候就需要引入闭包了。
闭包的概念现在我们来说什么是闭包,我所理解的闭包就是就是可以访问其他函数内部的函数。同样像前面的例子,我们现在就用闭包来实现在函数外部访问local变量
function f1() { var local = 2; function bar() { console.log(local++) } return bar } var func = f1(); func(); // 2 func(); // 3
这个时候我们相当于通过函数bar()间接的访问到了函数f1()中的局部变量local,因此在func()第一次执行的时候我们得到local=2,但是为什么第二次调用func()得到的local却等于3呢? 按理说我第二次调用func()应该是从f1()中的第一句 var local = 2 开始执行啊。这就涉及闭包的另一个作用了。
闭包的作用闭包除了能访问函数内部的局部变量,还有一个作用就是将函数内部的变量值储存到内存中。
在上面的示例中,f1()的返回值是bar()函数,我们调用func()的时候其实就是在调用bar(), 而bar()定义在f1内部,是依赖f1()而存在的,因此调用bar时将f1()中的local变量放入了内存中,在第二次调用的时候自然也就从内存中得到了local++后的值。
本文参考文章:http://www.cnblogs.com/cxying... http://www.ruanyifeng.com/blo...
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/82869.html
摘要:到目前为止,我们完成了模块的简易定义与使用。但是模块化的一大精髓是命名空间,就是按需导入,而此时却是一个全局变量。 为什么需要模块化? 当我们在html中调用一个js函数时,如果我们把这个函数写在另外的一个js文件中,那么调用的时候我们需要在html的头部引入那个js文件。 index.html Hello world index.js func...
摘要:但是,不合理地滥用闭包,也会造成很多性能问题,从而使项目维护成本增加。 前言 相信很多小伙伴在工作或者面试过程中都遇到过这个问题,作为经典的前端面试题之一,它高频地出现在我们的求职生涯中。所以,了解和掌握它也就变得十分必要了 读完这篇文章,你或许就会知道: 闭包是什么,它是怎么形成的 为什么要使用闭包 闭包会造成哪些问题 如果文章中有出现纰漏、错误之处,还请看到的小伙伴多多指教,先...
摘要:而在中,表达式是对象,它们必须依附于一类特别的对象类型函数式接口。即表达式返回的是函数式接口类型。 Java8被称作Java史上变化最大的一个版本。其中包含很多重要的新特性,最核心的就是增加了Lambda表达式和Stream API。这两者也可以结合在一起使用。首先来看下什么是Lambda表达式。Lambda表达式,维基百科上的解释是一种用于表示匿名函数和闭包的运算符,感觉看到这个解释...
摘要:个人前端文章整理从最开始萌生写文章的想法,到着手开始写,再到现在已经一年的时间了,由于工作比较忙,更新缓慢,后面还是会继更新,现将已经写好的文章整理一个目录,方便更多的小伙伴去学习。 showImg(https://segmentfault.com/img/remote/1460000017490740?w=1920&h=1080); 个人前端文章整理 从最开始萌生写文章的想法,到着手...
阅读 1073·2021-11-19 09:40
阅读 2213·2021-11-15 18:00
阅读 1266·2021-10-18 13:34
阅读 2247·2021-09-02 15:40
阅读 1532·2019-08-30 14:01
阅读 1112·2019-08-30 11:11
阅读 2481·2019-08-29 15:26
阅读 721·2019-08-29 14:15