![]() |
1
45
将函数分配给单击处理程序时, closure 创建。 基本上,当嵌套函数时会形成一个闭包,内部函数可以引用它们的外部封闭函数中存在的变量,即使它们的父函数已经执行了。
在执行click事件时,处理程序引用
正如您注意到的,通过包装click handler函数来接受
当您迭代时,实际上创建了4个函数,每个函数存储对
我使用以下代码片段来解释闭包(以及 curry )我认为一个简单的例子可以更容易地得到这个概念:
|
![]() |
2
10
在不涉及太多细节的情况下,这基本上是通过将实例变量包装在一个立即执行的函数中,并将其传递回在单击元素时将执行的函数来创建实例变量的副本。 这样想:
所以在循环的每次迭代中,实际上 执行 一个返回 功能 与 现在的 变量的值。 如果您设想循环中有4个锚,那么您将创建4个独立的函数,这些函数可以可视化为..
我会考虑使用JavaScript来研究范围和闭包,就好像您沿着这条路走,并且不确切地了解正在发生的事情,您可能会遇到意想不到的行为带来的巨大问题。 |
![]() |
3
2
当触发onclick事件时,调用匿名函数并引用同一个变量
解决问题的方法是使用返回函数的函数:
|
![]() |
Abhijit Sarkar · 如何修复“闭包可能比当前函数更有效” 3 年前 |
![]() |
Houman · 如果未调用闭包,如何使XCTest失败? 7 年前 |
![]() |
Kapil_A · 如何将swift中使用的闭包写入目标c? 7 年前 |
![]() |
Xendar · Jenkins管道模拟Groovy 7 年前 |
![]() |
Ibrahim Mohammed · 函数不考虑闭包 7 年前 |