JavaScript闭包功能有几点,如何应用闭包
Admin 2022-07-01 群英技术资讯 264 次浏览
函数本身和该函数声明时所处的环境状态的组合。
举例:
<!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中,可以使用Number对象的toString()方法来将数字转为Hex(16进制),该方法可以解析指定数值,并尝试返回指定基数(进制)的字符串表示形式,语法为“指定数字对象.toString(16);”。
方法:1、利用“document.getElementById("id")”语句根据id值获取指定的html标签元素对象;2、利用“标签元素对象.style.display="none";”语句将获取到的html标签元素隐藏即可。
目录前言一、forEach(),用于遍历数组,无返回值二、map(),用于遍历数组,返回处理之后的新数组三、every(),用于判断数组中的每一项元素是否都满足条件,返回一个布尔值四、some(),用于判断数组中的是否存在满足条件的元素,返回一个布尔值五、filter(),用于筛选数组中满足条件的元素,返回一个筛选后的
这篇文章主要为大家详细介绍了JavaScript实现简单的拖拽效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
这篇文章主要为大家介绍了JavaScript的垃圾回收机制,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008