我忘记了javascript中用来描述特定现象的术语。它与在内联函数中访问变量的方式有关。我也不太理解这个理论。我依稀记得下面的代码
for(var c = 0; c< 10; c++)
{
arrayOfObjects[c].onclick = function() {alert(c); };
}我记得当点击一个对象时,警告窗口总是打印10,然后有人解释说这是因为javascript中的所有东西都是对象。即使function(){blah}也是一个在运行时计算的对象,这就是为什么我对变量作用域感到困惑的原因。
我认为描述这一现象的术语是从字母e开始的,它类似于封装,或封装,或诱捕,或类似的东西。
我要找的术语是什么?
发布于 2012-04-29 18:53:12
在示例代码中,一个有效的闭包可能如下所示:
for(var c = 0; c< 10; c++) {
arrayOfObjects[c].onclick = function(cc) {
// cc is sustained in here
return function () {
alert(cc);
}
}(c);
}由于末尾的(),outter函数会立即执行,并将'c‘作为'cc’传递给它。然后内部函数被“构造”,并为onclick返回。当这个存储的内部函数稍后执行时,它仍将具有对“cc”的引用,就像它在构造时一样。
https://stackoverflow.com/questions/10366877
复制相似问题