变量捕获:在编程中(常见于闭包/匿名函数),函数在创建时把其外层作用域中的变量“带上”,使得即使离开原作用域,函数仍然可以访问这些变量。
(在正则表达式中也有“capture(捕获组)”的用法,但“variable capture”更常指闭包语境下的变量捕获。)
/ˈvɛəriəbl ˈkæptʃər/
A closure uses variable capture to remember values from its outer scope.
闭包通过变量捕获来记住外层作用域中的值。
If the loop variable is captured by reference, all callbacks may see the same final value, which can cause subtle bugs.
如果循环变量是按引用被捕获的,所有回调可能都会看到同一个最终值,从而引发隐蔽的 bug。
variable 来自拉丁语 variabilis(“可变化的”);capture 来自拉丁语 capere(“抓住、拿住”)。在计算机术语中,capture 引申为“把某个值/信息收集并保留供之后使用”,因此 variable capture 直译即“把变量抓住并带走”,对应闭包把外层变量绑定到自身环境中的机制。