JavaScript闭包功能有几点,如何应用闭包
Admin 2022-07-01 群英技术资讯 768 次浏览
这篇文章将为大家详细讲解有关“JavaScript闭包功能有几点,如何应用闭包”的知识,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。函数本身和该函数声明时所处的环境状态的组合。





举例:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
function createCheckTemp(standardTemp){
function checkTemp(n){
if(n<=standardTemp){
alert('你的体温正常');
}else{
alert('你的体温偏高');
}
}
return checkTemp;
}
var checkTemp_A=createCheckTemp(37.1);
var checkTemp_B=createCheckTemp(37.3);
checkTemp_A(37.2);
checkTemp_A(37.0);
checkTemp_B(37.2);
checkTemp_B(37.0);
</script>
</body>
</html>
细节:
1:闭包的记忆性
2:函数return checkTemp,是一个函数名
3:定义var checkTemp_A和checkTemp_A来获取函数名checkTemp,而不是直接调用

闭包代码举例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// 封装一个函数,这个函数的功能就是私有化变量
function fun(){
// 定义一个局部变量a
var a=0;
return {
getA:function(){
return a;
},
add:function(){
a++;
},
pow:function(){
a*=2;
}
}
}
var obj=fun();
// 如果想在fun函数外面使用变量a,唯一的方法就是调动getA()方法
console.log(obj.getA());
// 想让变量a进行+1操作
obj.add();
obj.add();
obj.add();
console.log(obj.getA());
obj.pow();
console.log(obj.getA());
</script>
</body>
</html>

其实可以理解,JavaScript不像C++、Java那样能定义函数的类型,比如int sum()、int add()、int pow()等等,所以就需要利用闭包的特性:即在函数内闭包的记忆性来对函数内变量进行操作,然后返回闭包函数的名称来进行内部数据操作。
JS特殊函数,一旦被定义,就立即被调用

举例:
前后两图对比一下,体现编程水平。。。简化代码。。美观。。。



这种情况下,下面五个语句的结果都是5,因为在JS中是没有块作用域这个概念的(暂时这么理解),所以var i就成了全局变量,for循环后i=5。所以五个语句的结果都是5。
那么加下来可以利用IIFE解决这个问题,其本质是利用了函数的闭包特性

将全局变量i传入IIFE函数中,全局变量 就 变成了局部变量,再利用JS函数的闭包特性,即可以实现图中arr[2]()的功能。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
有一些刚接触JavaScript的新手对于JavaScript语句写在哪里会有点困惑,对此这篇我们就简单的了解一下JavaScript语句的写法。我们要知道JavaScript语句是必须嵌套在“script”标签中,接下来我们来看看要注意哪些及怎样写。
目录前言Promise.all基础学习Iterator 接口参数思路分析源码实现Promise.allSettled基础学习思路分析源码实现Promise.race基础学习思路分析源码实现Promise.any基础学习思路分析源码实现前言恰逢 Promise 也有四个很像的静态三兄弟(Promise.all、Promi
本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于运算符的相关问题,运算符也被称为操作符,是用于实现赋值、比较和执行算术运算等功能的符号,下面一起来看一下,希望对大家有帮助。
这篇文章主要为大家详细介绍了Vues实现跑马灯效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Events是Node中的一个很重要的核心模块,Stream,网络,文件系统统统都是继承自这个模块。Streams模块就是继承自EventEmitter,所以说弄明白Events模块,特别是EventEmitter对象,对于理解Node中的很多模块都是有好处的。Stream非常擅长处理数据,无论是读,写或者是转换。比如,你可以用Stream接收数据库中的数据,将其流出到csv的流中,导出成
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008