首页 > 编程语言 >JavaScript の 闭包

JavaScript の 闭包

时间:2024-07-30 13:55:29浏览次数:12  
标签:闭包 outer 函数 JavaScript inner fn 变量

闭包

概念:一个函数对周围状态的引用捆绑在一起,内层函数中访问到其外层函数的作用域(什么鸟语)

简单理解就是:闭包 = 内层函数 + 外层函数的变量

  function outer() {
    let a =0
    function inner() {
      a++
      console.log(a)
    } 
    return inner
  }//这里的inner函数使用了外层函数outer的变量a,就是闭包
  const fn = outer()
  fn()//打印1
  fn()//打印2

作用:封闭数据,提供操作,使外部也可以访问函数内部的变量,对于上面的代码来说就是让外部函数fn可以访问outer的内部变量a

注意上述代码的 a 虽然是局部变量,但是通过全局变量 fn 是可以访问到 a 的,所以变量 a 在函数执行完毕后并不会被自动回收,因此发生了内存泄漏

标签:闭包,outer,函数,JavaScript,inner,fn,变量
From: https://blog.csdn.net/2301_80293400/article/details/140795076

相关文章

  • html中javascript点击事件后显示或隐藏某些元素时需要点击两次才生效的原因分析和优化
    html中javascript点击事件后显示或隐藏某些元素时需要点击两次才生效的原因分析和优化。原来的代码如下:<divclass="cardcardcol-sm-6col-md-4col-xl-2col-lg-2justify-content-centerbg-secondary-subtle"id="tools-trigger"><ahref="javascript:vo......
  • 自学JavaScript(放假在家自学第一天)
    目录 JavaScript介绍分为以下几点1.1JavaScript是什么1.2JavaScript书写位置1.3Javascript注释1.4Javascript结束符1.5Javascript输入输出语法JavaScript(是什么?)是一种运行在客户端(浏览器)的编程语言,实现人机交互效果。2.作用(做什么?)网页特效(监听用户的......
  • JavaScript入门速称
    菜鸟教程:JavaScript教程|菜鸟教程(runoob.com) 对象操作1.对象增删改查1.1创建对象letobj={}1.2新增属性obj.a=11.3修改属性obj.a='a'1.4查询属性obj.a|1.5删除属性deleteobj.a2.其他操作2.1obj[a]=12.2Object.assign()2.3let{name......
  • javascript中的symbol
    symbol的使用功能类似于一种标志唯一性的ID理解唯一性<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title></head><body><script>lets1=Symbol()lets......
  • javascript(一)
    一、基本语法1.位置(1)JavaScript脚本必须位于<script>与</script>之间(2)<script>标签可以位于<body>或者<head>部分中2.输出语句(1)window.alter()弹出警告框(2)document.write()可以将内容在网页中打印出来,同时也会将原有的内容覆盖(3)console.log()可以将内容在......
  • JavaScript图片轮播
    代码在文章最后面(含图片URL)实现功能按向左按钮图片显示上一张按向右按钮图片显示下一张每隔2000毫秒显示下一张图底部三个圆点显示当前的图片的编号实现流程初始化图片数组创建一个包含图片URL的数组,轮播时会通过这个数组来切换图片。创建当前索引变量 这个变量用来追踪......
  • django学习入门系列之第五点《javascript的条件语句和函数》
    文章目录5.6条件语句5.7函数往期回顾5.6条件语句if(){}elseif(){}5.7函数#python中函数定义的格式deffunc{函数的内容}#使用函数func()//javascript函数中的内容functionfunc(){函数的内容}//使用函数func()往......
  • 简单聊聊JavaScript 中的原型链、null 和 undefined 的区别
    1.原型链个人观点:原型链和逻辑判断里三段论有些类似,一个大前提、一个小前提、一个结论。比如,动物会吃肉,狗是动物,所以狗会吃肉。这也是继承的思想原型和构造函数JavaScript是基于原型的面向对象编程语言,每个对象都有一个内部链接到另一个对象(即原型)。这个机制被称为原型链。原......
  • python 闭包、装饰器
    一、闭包:1.外部函数嵌套内部函数 2.外部函数返回内部函数 3.内部函数可以访问外部函数局部变量         闭包(Closure)是指在一个函数内部定义的函数,并且内部函数可以访问外部函数的局部变量,即使外部函数已经执行完毕,这种现象称为闭包。在Python中,闭包常常用......
  • 探索 IPython 中的 %%javascript 魔法命令:运行 JavaScript 代码的秘籍
    引言IPython是一个强大的交互式计算环境,它不仅支持Python语言,还通过各种魔法命令扩展了其功能。其中,%%javascript魔法命令是IPython扩展中一个非常有趣的特性,它允许用户在IPython环境中直接运行JavaScript代码。这对于需要在数据科学和科学计算中使用JavaScript......