关于js闭包的作用实例讲解
程序员文章站
2022-09-24 11:28:33
在js中,闭包是一个重点,也是一个难点。因为闭包对像java这类语言的coder会觉得很生涩难懂,对初学的js的coder会感到难以理解,在这根据自己对闭包的一些浅显的理解分享出来。若有不对的地方,...
在js中,闭包是一个重点,也是一个难点。因为闭包对像java这类语言的coder会觉得很生涩难懂,对初学的js的coder会感到难以理解,在这根据自己对闭包的一些浅显的理解分享出来。若有不对的地方,望多多包含。
闭包
闭包,指的是在函数里的函数。(其实闭包就是被嵌套的那个函数)
function closebag(){ function(){} // 这个匿名函数就是一个闭包 }
了解了什么是闭包之后,来认识一下闭包的作用。
作用一:获取函数内部的局部变量并将其驻留在内存中
在js中有函数作用域,在函数内通过var定义的变量,外部作用域无法直接获取。既然只是外部作用域无法获取。那么,它的子作用域便可以获取到,我们想将这个局部变量返回到外部作用域,那么便可以通过闭包完成该传递。
在这有人就会疑惑,如果只是需要获取函数内部的局部变量,直接将需要的局部变量return不就可以拿到了吗?的确,若只是需要获取局部变量,的确可以通过这种方式。但如果要实现计数功能,那么闭包使局部变量驻留在内存中的作用便显现了出来。
function closebag2(){ var num = 22; // 通过闭包将举报变量返回到外部作用域 return function() { return num++; } } var num = closebag2(); console.log(num()); // 22 console.log(num()); // 23 console.log(num()); // 24 console.log(num()); // 25
作用二:封闭作用域
通过自调用函数形成一个封闭作用域(相当于java的块级作用域),在该封闭作用域内,定义的变量和函数都是私有的,全局作用域并不能直接访问,但可以通过返回一个对象来获取该封闭作用域里的方法或变量。通常,我们利用这种封闭作用域来封装一些我们常用的方法库。
自调用函数写法: (function(){})()
封装库例子: var utils = (function(){ function add(){} function mul(){} function sub(){} return { add: add, mul: mul, sub: sub } })();
以上是我对闭包的浅显的理解,希望有大神指出我的不足和对闭包知识点的补充,万分感谢。
下一篇: iOS 跳转到第三方应用或者设置页面