2024大二上js高级+ES6学习9.26(闭包,递归函数)

news2024/11/18 3:33:30

9.26.2024

1.闭包

什么是闭包:

闭包的作用:

Return 的函数作为fn的子函数,可以使用fn的局部变量num,局部变量num要等所有使用它的函数调用完毕后才销毁

2.闭包的案例

点击li会发现输出4

在 JavaScript 中,事件处理器(如 onclick)是异步的,这意味着它们不会立即执行,而是在特定的事件发生时(在这个例子中,是用户点击元素时)才会被调用。因此,尽管你在循环中为每个元素的 onclick 属性分配了函数,但这些函数并不会在循环结束之前执行。它们只是被设置为在将来某个时刻(用户点击元素时)可能被调用的函数。

以下是为什么这些函数是在循环结束后才调用的详细解释:

  1. 事件监听器的异步性质
    • onclick 属性设置的函数是一个事件监听器。它告诉浏览器在用户点击元素时执行特定的函数。这个函数的调用是异步的,因为它依赖于用户的行为。
  2. 事件循环
    • JavaScript 运行在单线程环境中,使用事件循环来处理异步操作。当循环中的函数设置完毕后,JavaScript 引擎会继续执行其他任务。只有当相应的事件(如点击)发生时,事件循环才会从消息队列中取出事件监听器函数并执行。
  3. 非阻塞行为
    • JavaScript 设计为非阻塞语言,这意味着它允许页面在执行长时间运行的脚本时仍然响应用户操作。设置事件监听器(如 onclick)不会阻塞代码的执行,因此循环可以快速完成,而事件监听器函数则在事件发生时被调用。
  4. 用户交互触发
    • onclick 函数只有在用户实际点击元素时才会执行。这是用户交互的一部分,而不是代码执行的一部分。
  5. 闭包和变量引用
    • 在循环中,每个 onclick 函数捕获了循环变量 i 的当前引用。由于这些函数是闭包,它们引用的是循环变量 i 而不是它的值的副本。因此,当这些函数最终被调用时(用户点击),它们引用的 i 变量的值是循环结束时的值。
  6. 循环结束
    • 循环结束意味着所有的 onclick 函数已经被设置好,但是还没有被调用。它们只是在等待用户的点击事件。

这就是为什么在循环中设置的 onclick 函数会在循环结束后才被调用的原因。这种行为是 JavaScript 事件驱动和异步执行模型的一部分。

闭包不一定是好的:会占用内存

案例实现原理:应用立即执行函数的立即响应包

案例一:

案例二:

案例三:出租车计费器

思考题:

3、递归函数

案例:

4.递归遍历数据:

升级:使用变量obj来接受返回的数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2176566.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言 | Leetcode C语言题解之第443题压缩字符串

题目&#xff1a; 题解&#xff1a; void swap(char *a, char *b) {char t *a;*a *b, *b t; }void reverse(char *a, char *b) {while (a < b) {swap(a, --b);} }int compress(char *chars, int charsSize) {int write 0, left 0;for (int read 0; read < charsSi…

软考论文《论模型驱动架构设计方法及其应用》精选试读

论文真题 模型驱动架构设计是一种用于应用系统开发的软件设计方法&#xff0c;以模型构造、模型转换和精化为核心&#xff0c;提供了一套软件设计的指导规范。在模型驱动架构环境下&#xff0c;通过创建出机器可读和高度抽象的模型实现对不同问题域的描述&#xff0c;这些模型…

【HTTP(3)】(状态码,https)

【认识状态码】 状态码最重要的目的&#xff0c;就是反馈给浏览器:这次请求是否成功&#xff0c;若失败&#xff0c;则出现失败原因 常见状态码: 200:OK&#xff0c;表示成功 404:Not Found&#xff0c;浏览器访问的资源在服务器上没有找到 403:Forbidden&#xff0c;访问被…

你还在用Java8吗?

Java 11 在企业中&#xff0c;Java的不同版本使用情况随着时间在不断变化。根据最新的数据报告&#xff0c;以下是一些关键点&#xff1a; Java 11 和 Java 17 成为企业中最常用的长期支持&#xff08;LTS&#xff09;版本&#xff0c;使用率分别为 48% 和 45%&#xff0c;而 …

rtp协议:rtp固定头部介绍

前言&#xff1a; 大家好&#xff0c;今天开始给大家分享rtp协议的相关详细介绍&#xff0c;关于rtsp的介绍&#xff0c;大家可以暂时看官方的文档&#xff1a; https://datatracker.ietf.org/doc/html/rfc2326 本文主要是介绍rtp协议&#xff0c;也就是在开发rtsp过程进行传输…

微积分-反函数6.3(对数函数)

如果 b > 0 b > 0 b>0 且 b ≠ 1 b \neq 1 b1&#xff0c;则指数函数 f ( x ) b x f(x) b^x f(x)bx 不是递增就是递减&#xff0c;因此它是通过水平线测试的单调函数。所以它具有反函数 f − 1 f^{-1} f−1&#xff0c;称为以 b b b 为底的对数函数&#xff…

【数据结构】链表(2)

【LinkedList的模拟实现】 这是java中的一个集合类&#xff0c;可以当成链表来使用&#xff0c;作为链表时&#xff0c;它视为包含三个域&#xff0c;是一个双向链表 【构建LinkedList框架】 public class MyLinkedList {static class ListNode{public int val;public ListNo…

Qt/C++如何选择使用哪一种地图内核/不同地图的优缺点/百度高德腾讯地图/天地图/谷歌地图

一、前言说明 最近花了大半年时间&#xff0c;专门研究这个地图组件&#xff0c;几乎把各种地图的官网的手册翻了个遍&#xff0c;亲自写代码验证了一遍&#xff0c;各种API函数接口和功能全部实战一遍&#xff0c;然后从中提取共性&#xff0c;做出了基类&#xff0c;以及通用…

使用 Light Chaser 进行大屏数据可视化

引言 在当今数据驱动的世界中&#xff0c;数据可视化变得越来越重要。Light Chaser 是一款基于 React 技术栈的大屏数据可视化设计工具&#xff0c;通过简单的拖拽操作&#xff0c;你可以快速生成漂亮、美观的数据可视化大屏和看板。本文将介绍如何使用 Light Chaser 进行数据…

改善大模型 RAG 效果:结合检索和重排序模型

最近这一两周不少大厂都已经开始秋招面试了。 不同以往的是&#xff0c;当前职场环境已不再是那个双向奔赴时代了。求职者在变多&#xff0c;HC 在变少&#xff0c;岗位要求还更高了。 最近&#xff0c;我们又陆续整理了很多大厂的面试题&#xff0c;帮助一些球友解惑答疑&am…

【含文档】基于Springboot+Vue的个人博客系统(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

【吊打面试官系列-MySQL面试题】优化MySQL数据库的方法?

大家好&#xff0c;我是锋哥。今天分享关于【优化MySQL数据库的方法?】面试题&#xff0c;希望对大家有帮助&#xff1b; 优化MySQL数据库的方法? 1、选取最适用的字段属性&#xff0c;尽可能减少定义字段宽度&#xff0c;尽量把字段设置 NOTNULL&#xff0c; 例如’省份’、…

大数据新视界 --大数据大厂之基于 MapReduce 的大数据并行计算实践

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

【SpringBoot详细教程】-07-整合Thymeleaf模板引擎与静态资源【持续更新】

关注点一点&#xff0c;友谊深一点 &#x1f332; 静态资源访问 在我们开发web应用的时候&#xff0c;需要引入大量的js、css、图片等静态资源。 默认配置 SpringBoot 默认提供的静态资源目录位置需要置于classpath下&#xff0c;目录名需要符合如下规则&#xff1a; /stat…

用ChatGPT做数据分析与挖掘,爽啊

最近已有不少大厂都在秋招宣讲了&#xff0c;也有一些在 Offer 发放阶段。 节前&#xff0c;我们邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对新手如何入门算法岗、该如何准备面试攻略、面试常考点、大模型技术趋势、算法项目落地经验分享等热门话题进行了…

34 | 实战一(上):通过一段ID生成器代码,学习如何发现代码质量问题

在前面几篇文章中&#xff0c;我们讲了一些跟重构相关的理论知识&#xff0c;比如&#xff1a;持续重构、单元测试、代码的可测试性、解耦、编码规范。用一句话总结一下&#xff0c;重构就是发现代码质量问题&#xff0c;并且对其进行优化的过程。 前面的内容相对还是偏理论。…

笔记本维修与拆解(一)

清灰&#xff1a; 拆螺丝: 拔掉电池供电&#xff1a; 多按几次开机键&#xff0c;放电&#xff1a; 涂抹硅胶的时候&#xff0c;千万不要涂很多&#xff0c;溢出CPU&#xff0c;如果硅胶溢到焊盘上去的话很容易热胀冷缩短路 【联想拯救者Y9000P和R9000P最简单清灰教程&#xf…

2024年7月大众点评全国美发前百名城市分析

在做一些城市分析、学术研究分析、商业选址、商业布局分析等数据分析挖掘时&#xff0c;大众点评的数据参考价值非常大&#xff0c;截至2024年7月&#xff0c;大众点评美食店铺剔除了暂停营业、停止营业后的最新数据情况分析如下。 分析研究的字段维度包括大众点评数字id、字母…

「Python入门」vscode的安装和python插件下载

粗浅之言&#xff0c;如有错误&#xff0c;欢迎指正 文章目录 前言Python安装VSCode介绍VSCode下载安装安装python插件 前言 Python目前的主流编辑器有多个&#xff0c;例如 Sublime Text、VSCode、Pycharm、IDLE(安装python时自带的) 等。个人认为 vscode 虽然在大型项目上有…

创新大赛:如何在国赛现场赛中脱颖而出?

创新大赛&#xff1a;如何在国赛现场赛中脱颖而出&#xff1f; 前言创意与可行性问题定义讲故事商业价值数据支撑简化表达总结结语 前言 在当今这个快速变化的时代&#xff0c;创新已成为推动社会进步的重要动力。无论是科技、教育、医疗还是日常生活的方方面面&#xff0c;创新…