3

将参数从函数传递到setTimeout调用中是什么意思?怎么又path回来了undefined?而我应该怎么做呢?

$('.curatorSpace').bind('click', function() {
    var path = $(this).attr('data-path');
    setTimeout(function(path) {
        if($('#curatorRibbon').hasClass('ui-draggable-dragging')){return false}
        runOverlay(path);
    }, 100);
});
4

1 回答 1

7

你不需要/必须在那里传递任何东西。path是一个自由变量,由您传入的匿名函数关闭setTimeout。因此,您可以访问它。

setTimeout(function() {
    if($('curatorRibbon').hasClass('ui-draggable-dragging')){return false}
    runOverlay(path);  // path gets resolved in the parent context
}, 100);

实际上,通过声明path该匿名函数的形式参数,您已经通过作用域链覆盖了该变量查找过程。摆脱它。

于 2012-09-18T00:16:38.873 回答