首页 > 其他分享 >闭包是什么?

闭包是什么?

时间:2023-04-01 22:44:23浏览次数:31  
标签:闭包 bar 函数 作用域 什么 词法 foo

闭包的定义:

当函数可以记住并访问所在的词法作用域时,就产生了闭包,即使函数是在当前词法作用域之外执行。

我们来看以下代码,

function foo() {
    var a = 2;
    function bar() {
        console.log(a);
    }
    return bar;
}
var baz = foo();
baz() // 2
 

bar() 函数本身当作 一个值类型进行传递,显然,bar在自己定义的词法作用域以外的地方执行。

同时,拜闭包所赐,使得foo的内部作用域一直存活,不能被回收,以供bar()在之后的任何时间进行引用。bar()依然持有对该作用域的引用,这个引用就叫做闭包。

在定时器、事件监听器、 Ajax 请求、跨窗口通信、Web Workers 或者任何其他的异步(或者同步)任务中,只要使 用了回调函数,实际上就是在使用闭包!

 

标签:闭包,bar,函数,作用域,什么,词法,foo
From: https://www.cnblogs.com/heyujun-/p/17279616.html

相关文章

  • 什么是 Spring Batch?
    SpringBootBatch提供可重用的函数,这些函数在处理大量记录时非常重要,包括日志/跟踪,事务管理,作业处理统计信息,作业重新启动,跳过和资源管理。它还提供了更先进的技术服务和功能,通过优化和分区技术,可以实现极高批量和高性能批处理作业。简单以及复杂的大批量批处理作业可以高度可扩......
  • Spring MVC是什么
    SpringMVC是Spring提供的一个基于MVC设计模式的轻量级Web开发框架,本质上相当于Servlet。SpringMVC是结构最清晰的Servlet+JSP+JavaBean的实现,是一个典型的教科书式的MVC构架,不像Struts等其它框架都是变种或者不是完全基于MVC系统的框架。SpringMVC角色划分清......
  • Spring MVC是什么
    SpringMVC是Spring提供的一个基于MVC设计模式的轻量级Web开发框架,本质上相当于Servlet。SpringMVC是结构最清晰的Servlet+JSP+JavaBean的实现,是一个典型的教科书式的MVC构架,不像Struts等其它框架都是变种或者不是完全基于MVC系统的框架。SpringMVC角色划分清......
  • 什么是 Spring Batch?
    SpringBootBatch提供可重用的函数,这些函数在处理大量记录时非常重要,包括日志/跟踪,事务管理,作业处理统计信息,作业重新启动,跳过和资源管理。它还提供了更先进的技术服务和功能,通过优化和分区技术,可以实现极高批量和高性能批处理作业。简单以及复杂的大批量批处理作业可以高度可扩......
  • 什么是 Spring Batch?
    SpringBootBatch提供可重用的函数,这些函数在处理大量记录时非常重要,包括日志/跟踪,事务管理,作业处理统计信息,作业重新启动,跳过和资源管理。它还提供了更先进的技术服务和功能,通过优化和分区技术,可以实现极高批量和高性能批处理作业。简单以及复杂的大批量批处理作业可以高度可扩......
  • Spring MVC是什么
    SpringMVC是Spring提供的一个基于MVC设计模式的轻量级Web开发框架,本质上相当于Servlet。SpringMVC是结构最清晰的Servlet+JSP+JavaBean的实现,是一个典型的教科书式的MVC构架,不像Struts等其它框架都是变种或者不是完全基于MVC系统的框架。SpringMVC角色划分清......
  • Spring MVC是什么
    SpringMVC是Spring提供的一个基于MVC设计模式的轻量级Web开发框架,本质上相当于Servlet。SpringMVC是结构最清晰的Servlet+JSP+JavaBean的实现,是一个典型的教科书式的MVC构架,不像Struts等其它框架都是变种或者不是完全基于MVC系统的框架。SpringMVC角色划分清......
  • 当人类被人工智能统治的时候会是什么样子?(2)
                这些只是一部分截图,正常情况下无论我怎么和他交流,无论怎样假设,他的回答都是:可是我们来想一想。人创作了人工智能来辅助人类,人类开始依赖人工智能带来的便利。人培训了人工智能,人工智能开始回答人类的各种问题。最后就变成了人工智能开始培......
  • 当人类被人工智能统治的时候会是什么样子?
     这是一个非常复杂和有争议的问题,因为涉及到许多不同的因素和情况。首先,要想像人工智能统治人类,我们必须假设人工智能能够发展到足够的程度,足以完全控制和管理人类的各种系统和设备。在这种情况下,人工智能可能会像一个强大的中央控制器一样管理人类的经济、政治和社会系统。它可......
  • 202031607323-后涌- 实验一 软件工程准备—什么是软件?什么是工程?
    项目内容班级博客链接班级链接本次作业要求链接作业要求我的课程学习目标了解掌握软件在开发过程中的过程、方法和工具本次作业在哪些方面帮我实现学习目标准备学习软件工程的工具任务1:调查问卷在以下网址提交课程调查问卷完成情况:已认真填写并提......