js中的闭包
程序员文章站
2022-06-09 20:06:32
...
**
1.什么是闭包
**
闭包就是能够读取其他函数内部变量的函数。在JS中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解为”定义在一个函数内部的函数”。
function fn() {
var b = 1;
//闭包
function box() {
//
console.log(b);
}
//返回一个函数,这个函数就是一个闭包
return box;
}
//res 就是 box 函数
var res = fn();
//2秒以后调用res函数,还是能打印b的值,闭包能让局部变量常驻内存
setTimeout(function() {
res();
}, 2000);
2.闭包的特点
1:可以读取函数内部的变量。
变量的作用域无非就是两种:全局变量和局部变量。
JS语言的特殊之处,就在于函数内部可以直接读取全局变量。另一方面,函数外部自然无法读取函数内的局部变量
2:让这些变量的值始终保存在内存中。
闭包的应用场景
1:函数作为返回值。
function box() {
var n = 1; //
function cox() {
n++;
return n;
}
return cox;
}
//res 就是一个闭包 ,n像是一个全局变量
var res = box();
console.log(res()); //2
console.log(res()); //3
2:函数作为参数被传递
回调函数
上一篇: JS延迟脚本与异步脚本的区别与联系
下一篇: 原生JS移动div
推荐阅读
-
js查找某元素中的所有图片地址的方法_jquery
-
Yii2的相关学习记录,自定义gii模板和引用vendor中的js、css(四) - 漫游云巅
-
JS封闭函数、闭包、内置对象
-
在HTML中利用js调用php的内容-计数器实例_PHP教程
-
js和jquery中循环的退出和继续学习记录_javascript技巧
-
js中利用tagname和id获取元素的方法_javascript技巧
-
JS中setInterval、setTimeout不能传递带参数的函数的解决方案_javascript技巧
-
js中事件的处理与浏览器对象示例介绍_javascript技巧
-
了不起的node.js读书笔记之node.js中的特性_node.js
-
jQuery在vs2008及js文件中的无智能提示的解决方法_jquery