相关疑难解决方法(0)

循环中的函数(返回另一个函数)如何工作?

我一直在尝试为JavaScript中的动态创建的"a"标记的onclick事件分配一个函数.所有标记都在循环中创建,如下所示:

for ( var i = 0; i < 4; i++ )
{
  var a = document.createElement( "a" );
  a.onclick = function( ) { alert( i ) };
  document.getElementById( "foo" ).appendChild( a );
}
Run Code Online (Sandbox Code Playgroud)

所有四个链接的警报值始终为"4".很明显.谷歌搜索时,我遇到了一个显示以下代码片段的帖子:

a.onclick = (function(p, d) {
return function(){ show_photo(p, d) }
})(path, description);
Run Code Online (Sandbox Code Playgroud)

我设法根据我的需要调整它并获得警报(i)正常工作的事情,但如果有人能够准确解释上述代码的作用,我将不胜感激.

javascript closures loops anonymous-function javascript-events

21
推荐指数
2
解决办法
2万
查看次数