js中闭包的作用及用法

闭包是什么

闭包:定义在一个函数内部的函数



前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、闭包是什么

闭包:定义在一个函数内部的函数

二、闭包的作用

1.可以访问父函数的变量
2.可以锁住父函数的变量

闭包的本质

1.父函数的作用域成为永恒作用域

闭包涉及到的作用域问题

1.全局作用域:在全局声明的变量,在任何作用域都有效,是浏览器打开时创建,关闭时销毁
2.局部作用域:在局部声明的变量,在局作用域内有效,变量声明时创建,调用结束后销毁。

1.闭包的第一个作用,访问父函数中的变量

代码如下(示例):

   var num = 10
   console.log(num);//10
   function fn() {
       var str = 'abc'
       console.log(num);//10,全局
       console.log(str);//abc,局部
   }
   fn()//调用后才能发挥作用
   // console.log(str);
   function fn_1() {
       console.log(num);//10
       console.log(str);//拿不到,str未定义
   }
   fn_1()//调用

2.闭包的第二个作用

代码如下(示例):

   var btn = document.getElementById('btn')
   // console.log(btn);
   btn.onclick = function () {
       var count = 0;
       return function () {//闭包
           count++
           btn.innerHTML = `点赞(${count})`//通过点击事件,不断地调用return语句
           // 中的函数,并将调用一次累加一次,然后将值赋给btn中的value
           // 而其中也体现了闭包的第二个作用,即将父函数中的变量锁住
           // console.log(this);
           // }()
       }
       // console.log(this);
   }()

可以达到点赞的效果


总结

1.闭包经常搭配多种情况出现问题,具体情况需要具体分析

出现这个错误的原因是在导入seaborn包时,无法从typing模块中导入名为'Protocol'的对象。 解决这个问题的方法有以下几种: 1. 检查你的Python版本是否符合seaborn包的要求,如果不符合,尝试更新Python版本。 2. 检查你的环境中是否安装了typing_extensions包,如果没有安装,可以使用以下命令安装:pip install typing_extensions。 3. 如果你使用的是Python 3.8版本以下的版本,你可以尝试使用typing_extensions包来代替typing模块来解决该问题。 4. 检查你的代码是否正确导入了seaborn包,并且没有其他导入错误。 5. 如果以上方法都无法解决问题,可以尝试在你的代码中使用其他的可替代包或者更新seaborn包的版本来解决该问题。 总结: 出现ImportError: cannot import name 'Protocol' from 'typing'错误的原因可能是由于Python版本不兼容、缺少typing_extensions包或者导入错误等原因造成的。可以根据具体情况尝试上述方法来解决该问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [ImportError: cannot import name ‘Literal‘ from ‘typing‘ (D:\Anaconda\envs\tensorflow\lib\typing....](https://blog.youkuaiyun.com/yuhaix/article/details/124528628)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值