JavaScript中闭包的含义是什么以及如何使用它

本文章将分享有关JavaScript中闭包的知识点,有一定的参考价值,希望对大家有所帮助

闭包是函数和声明该函数的词法环境的组合,当内部函数被保存到外部时,将会生成闭包而闭包会导致原有作用域链不释放,造成内存泄露,但同时闭包也是非常有用的,因为它可以将某些数据与对该数据的操作进行关联。

例:

function demo() {  var name = '张三'; // name 是demo()创建的局部变量  function demo1() { //demo1()是demo()中的内部函数(闭包)    console.log(name); // 使用父函数中声明的变量      }  demo1();      }demo();

登录后复制

运行结果

立即学习“Java免费学习笔记(深入)”;

Image 1.jpg

函数demo()中创建一个名为name的局部变量和一个名为demo1()的内部函数。 demo1()函数只能在demo()函数体内使用。 demo1没有自己的局部变量。但是由于内部函数可以访问外部函数的变量,所以demo1()可以访问父函数demo()中声明的变量名name。但是如果有同名变量 name 在demo1中被定义,则会使用 自己函数中定义的 name。该例子说明嵌套函数可以访问在其外部作用域中声明的变量。

如果上面的代码改成这样结果会如何?

function demo() {  var name = '张三';  function demo1() {    console.log(name);  }  return demo1;  }  var newDemo = demo();  newDemo();

登录后复制

运行结果

立即学习“Java免费学习笔记(深入)”;

Image 1.jpg

由运行结果可知两段代码结果一样,内部函数demo1()在执行之前被外部函数返回形成闭包,在这种情况下,newDemo()是运行demo时所创建的函数demo1的一个引用,所以当调用newDemo()时,变量名name仍可以传递给console.log(name)。

示例

function num(x) {  return function(y) {    return x + y;  };}  var num1= num(2);  var num2 = num(3);  console.log(num1(2));// 4  console.log(num2(2));// 5

登录后复制

运行结果

立即学习“Java免费学习笔记(深入)”;

Image 2.jpg

定义一个函数num(x)用于接收一个参数x并返回一个新函数,这个新函数还接收一个参数y并返回x和y之和;同时又定义了两个新的值num1,num2都为闭包且传值分别为2,3.

总结:以上就是本文章分享的内容了,希望对大家有所帮助。

以上就是JavaScript中闭包的含义是什么以及如何使用它的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2736779.html

(0)
上一篇 2025年3月8日 01:28:21
下一篇 2025年2月25日 04:24:27

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • javascript闭包是什么

    javascript闭包就是一个内部函数能够访问它所在外部函数作用域中的所有局部变量,参数或者是其他内部函数。使用闭包需要注意闭包使用增大了内存消耗,可能会造成内存泄漏 JavaScript中的闭包函数是javascript的一个重要知识点…

    2025年3月8日
    200
  • js闭包是什么

    闭包就是能够读取其他函数内部变量的函数。由于在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。 JavaScript闭包 在J…

    2025年3月8日
    200
  • 关于js中this、原型与闭包的深入理解

    1、this关键字 a、有对象指向对象; b、没对象指向全局变量(window); c、有new指向new出的新对象; d、bind,call&apply改变this的指向; e、setTimeout/setInterval thi…

    2025年3月8日
    200
  • 关于JS中闭包概念的详细讲解(附实例)

    闭包(closure)是javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 1、变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域。 变量的作用域无非就是两种:全局变量和局部变量。 Ja…

    2025年3月8日
    200
  • 浅谈JavaScript变量的作用域及闭包

    与闭包有关的概念:变量的作用域和变量的生存周期。下面本篇文章就来给大家介绍一下javascript中变量的作用域及闭包,有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 一、变量的作用域 1、变量的作用域指变量有效的范围,与…

    2025年3月8日
    200
  • 浅谈JS函数及闭包

    每声明一个函数就会产生一个作用域。而外面的作用域访问不了里面的作用域(把里面的变量和函数隐藏起来),而里面的可以访问到外面的。对于隐藏变量和函数是一个非常有用的技术。 基于作用域隐藏的方法叫做最小授权或最小暴露原则。 这个原则是指在软件设计…

    2025年3月8日
    200
  • js中闭包的概念

    闭包并不是 javascript 特有的,大部分高级语言都具有这一能力。 什么是闭包? A closure is the combination of a function bundled together (enclosed) with …

    编程技术 2025年3月7日
    200
  • 闭包应用场景有哪些

    闭包应用场景有:1、采用函数引用方式的setTimeout调用;2、小范围代替全局变量;3、有权访问私有变量和私有函数的公有方法。 函数外部无法访问函数内部的局部变量,但函数内部的函数可以访问本函数内的局部变量,故通过闭包实现函数外部访问函…

    2025年3月7日 编程技术
    200
  • 一起认识闭包

    相关学习推荐:javascript视频教程 前言 闭包 永远都是前端开发者绕不过去的一个坎,不管你喜欢与否,在工作和面试中,都会遇到。每个人对闭包的理解都不尽相同,这里笔者谈谈自身对闭包的理解。(如果与您的理解有出入,请以您自己为准  ) …

    2025年3月7日
    200
  • 一张纸搞懂JS系列(3)之垃圾回收机制,内存泄漏,闭包

    javascript栏目为大家介绍垃圾回收机制,内存泄漏,闭包的内容,快端小板凳来看看啦。 写在最前面:这是javascript栏目我即将开始写的一个系列,主要是在框架横行的时代,虽然上班用的是框架,但是对于面试,以及技术进阶,JS基础知识…

    2025年3月7日
    200

发表回复

登录后才能评论