将参数传递给setTimeout

时间:2012-09-18 00:15:09

标签: javascript jquery settimeout

将参数从函数传递到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);
});

1 个答案:

答案 0 :(得分:7)

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

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

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