Javascript 如何在函数中输入函数
我可以这样做:Javascript 如何在函数中输入函数,javascript,jquery,Javascript,Jquery,我可以这样做: function exec(fn){ setInterval(fn,0); } exec("newfn()"); 但是要寻找更干净的方法。您可以这样做: function exec(fn){ window[fn](); } exec("newfn"); 如果函数在全局范围内。只需传递函数名: function exec(fn){ setInterval(fn,0); } exec(newfn); 正如注释中已经提到的,将函数传递给另一个函数
function exec(fn){
setInterval(fn,0);
}
exec("newfn()");
但是要寻找更干净的方法。您可以这样做:
function exec(fn){
window[fn]();
}
exec("newfn");
如果函数在全局范围内。只需传递函数名:
function exec(fn){
setInterval(fn,0);
}
exec(newfn);
正如注释中已经提到的,将函数传递给另一个函数的最佳方法是向其传递引用,而不是包含其名称的字符串 例如:
function foo() {
console.log('Inside foo');
}
exec(foo);
要在exec中执行函数,只需将()
放在函数引用之后:
function exec(fn) {
fn();
}
但是,尽管您完全可以做到这一点,但我不认为使用
exec(foo)
比foo()有任何优势 为什么不setInterval(newfn,0)代码>?但是0
?如果要传递函数,请传递一个引用,而不是名称。@zzzzBov想详细说明吗?@Zee:请看adeneo的评论。@FelixKling那么你是说adeneo的评论是最干净的方式?这是一个很大的前提条件,通常不会是最简单的case@sahbeewah,即使setTimeout(foo,0),它也不会工作
已完成,并且foo不是全局范围内的函数newfn()
是全局范围内的另一个函数scope@AmitJoki:是的,foo
只需在范围内,而不必是全局的。不,因为fn
是一个字符串。