当前位置: 首页 > article >正文

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

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.kler.cn/news/331520.html

相关文章:

  • 申请免费或试用VPS服务
  • 音视频基础理论
  • Scrapy 爬虫的大模型支持
  • uniapp修改uni-ui组件样式(对微信小程序/H5有效,vue3)
  • MobX-Miniprogram:微信小程序的状态管理利器
  • JavaScript使用渐变来美化对象!
  • 【Kubernetes】常见面试题汇总(五十)
  • Unity初识+面板介绍
  • Linux基础命令reboot详解
  • Python | Leetcode Python题解之第452题用最少数量的箭引爆气球
  • Webpack模式-Resolve-本地服务器
  • 1.9 物理层设备
  • Maya动画--基础约束
  • 【每天学个新注解】Day 14 Lombok注解简解(十三)—@onX(onMethod= 、onConstructor= 、onParam=)
  • vue3 antdv3/4 Modal显示一个提示,内容换行显示。
  • 通信协议的选择:UART、SPI、I2C与CAN的比较
  • Linux中的进程间通信之管道
  • 【NoSQL】portswigger NoSQL注入 labs 全解
  • 抖去推数字人---技术本地服务器技术开发步骤
  • 【STM32】TCP/IP通信协议(2)--LwIP内存管理