将参数从函数传递到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);
});
答案 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
声明为该匿名函数的形式参数,您已经通过作用域链覆盖了该变量查找过程。摆脱它。