Jquery/Javascript-向我的小函数添加回调,仅当我选择

Jquery/Javascript-向我的小函数添加回调,仅当我选择,javascript,jquery,function,callback,Javascript,Jquery,Function,Callback,当我启动scrollMyScreen函数时,我希望有时能够调用回调函数(我希望它是我的flashArrow函数),我认为它类似于:scrollMyScreen(flashArrow()),但显然这不起作用。我的flashArrow函数实际上比警报更大,这只是一个例子 function scrollMyScreen() { $('body').delay(600).animate({scrollTop: $(target).offset().top}, 1000, callback) }

当我启动scrollMyScreen函数时,我希望有时能够调用回调函数(我希望它是我的flashArrow函数),我认为它类似于:
scrollMyScreen(flashArrow())
,但显然这不起作用。我的flashArrow函数实际上比警报更大,这只是一个例子

function scrollMyScreen() { 
    $('body').delay(600).animate({scrollTop: $(target).offset().top}, 1000, callback)
}

function flashArrow () { 
    alert('FLASHING ARROW!')
};
那么,我能做些什么来让它工作呢?我想调用scrollMyScreen,然后有时将函数flashArrow()添加为回调函数,或者在scrollMyScreen完成后添加函数

示例案例:

case "header": 
    scrollMyScreen()
    break
case "wrapper": 
    scrollMyScreen(flashArrow())
    break
您需要传递对
flashArrow
的引用,而不是调用
flashArrow()
的结果:

(别忘了将
回调
参数声明为
scrollMyScreen()
也!)

您需要传递对
flashArrow
的引用,而不是调用
flashArrow()
的结果:

(不要忘记将
回调
参数声明为
scrollMyScreen()

然后,您可以拨打:

scrollMyScreen(someFunction);
或:

更新:修复回调空问题

function scrollMyScreen(callback) { 
if (typeof(callback) == "function")
    $('body').delay(600).animate({scrollTop: $(target).offset().top}, 1000, callback);
else
    $('body').delay(600).animate({scrollTop: $(target).offset().top}, 1000);
}
然后,您可以拨打:

scrollMyScreen(someFunction);
或:

更新:修复回调空问题

function scrollMyScreen(callback) { 
if (typeof(callback) == "function")
    $('body').delay(600).animate({scrollTop: $(target).offset().top}, 1000, callback);
else
    $('body').delay(600).animate({scrollTop: $(target).offset().top}, 1000);
}

谢谢,伙计,嘿,如果我把scrollMyScreen和flashArrow变成变量而不是函数,我所要求的也能实现吗?只有当变量的值是函数的引用时,它才能被“调用”。所以你仍然必须像现在一样声明它们。谢谢,伙计,嘿,如果我把scrollMyScreen和flashArrow变成变量而不是函数,我所要求的也能实现吗?只有当变量的值是对函数的引用时,它才能被“调用”。所以你仍然必须像现在一样声明它们。嘿,你能解释一下为什么需要
typeof(callback).
部分吗?如果我只有
scrollMyScreen()它不工作,我需要添加null:
scrollMyScreen(null)在我的代码中,现在我有一个回调和一个yoffset:
scrollMyScreen(yoffset,callback)
,我尝试了你的代码,但是如果我不声明回调或yoffset,它不能阻止我添加Null。我修复了这个问题。如果传递函数,则typeof(callback)将返回“function”,如果未传递任何函数,则返回“undefined”。scrollMyScreen中的逻辑确保根据回调参数的存在与否进行正确的jQuery调用。嘿,你能解释一下为什么需要
typeof(callback)…
部分吗?如果我只有
scrollMyScreen()它不工作,我需要添加null:
scrollMyScreen(null)在我的代码中,现在我有一个回调和一个yoffset:
scrollMyScreen(yoffset,callback)
,我尝试了你的代码,但是如果我不声明回调或yoffset,它不能阻止我添加Null。我修复了这个问题。如果传递函数,则typeof(callback)将返回“function”,如果未传递任何函数,则返回“undefined”。scrollMyScreen中的逻辑确保根据回调参数的存在与否进行正确的jQuery调用。
scrollMyScreen();
function scrollMyScreen(callback) { 
if (typeof(callback) == "function")
    $('body').delay(600).animate({scrollTop: $(target).offset().top}, 1000, callback);
else
    $('body').delay(600).animate({scrollTop: $(target).offset().top}, 1000);
}