Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在函数中输入函数_Javascript_Jquery - Fatal编程技术网

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
是一个字符串。