【发布时间】:2014-03-07 13:15:45
【问题描述】:
我最近回答了一个问题,对我来说,它提出了语法问题。我已经查看了关于 SO 关闭的解释,但答案并没有解决我下面的具体问题。我曾尝试与为我提供答案的人讨论这个问题,他们建议我问另一个问题。这是我提供的解决方案,它有效,但我不明白:
for (var loop = 0;loop<onHoverSections.length;loop++) {
var extractedID = onHoverSections[loop].onHover;
for (var loopInner = 0;loopInner<sections.length;loopInner++) {
if (sections[loopInner].ID==extractedID) {
( function(p_loop, p_loopInner) {
onHoverSections[p_loop].hover(
function() {
sections[p_loopInner].trigger('onHover');
},
function() {
//
}
);
}
(loop, loopInner) );
}
}
}
我的问题与这部分代码有关:
( function(p_loop, p_loopInner) {
// .. code removed
}
(loop, loopInner) );
我的问题是:
为什么'loop'和'loopInner'参数在函数定义之后的一组括号中?
如果它们是不同函数的参数,函数定义在哪里?
为什么去掉外括号后这个功能不起作用?
我想充分理解此语法,以便在其他情况下复制此代码并了解它为何有效。谢谢。
【问题讨论】:
-
它被称为“自我唤起功能”。该函数已定义,并使用参数
loop和loopInner调用
标签: javascript loops for-loop syntax closures