Javascript 通过变量传递函数

Javascript 通过变量传递函数,javascript,jquery,Javascript,Jquery,我有这种情况: <script> var cb; function doSomething(c) { cb = c(); } cb(); </script> var cb; 功能剂量测定法(c){ cb=c(); } cb(); 但它不起作用。我想将一个变量设置为函数,以使其他函数调用回调。。一些想法?c()执行函数并返回值,您需要传递对它的引用: cb = c 另外,您应该调用函数doSomething(func)来进行赋值 doSomething(f

我有这种情况:

<script>
var cb;
function doSomething(c) {
    cb = c();
}

cb();
</script>

var cb;
功能剂量测定法(c){
cb=c();
}
cb();
但它不起作用。我想将一个变量设置为函数,以使其他函数调用回调。。一些想法?

c()
执行函数并返回值,您需要传递对它的引用:

cb = c

另外,您应该调用函数
doSomething(func)
来进行赋值

doSomething(function(){ alert('hello'); });
cb(); // "Hello"
但如果需要回调,则不需要全局变量:

function doSomething(callback) {
  // do something
  if (callback) callback();
}

当您使用另一个函数作为参数运行函数时,回调将运行。

您需要首先为函数分配cb:

<script>
var cb;
function doSomething(c) {
    cb = c;
}

var myFunc = function(){
   window.alert("test");
}

doSomething(myFunc);

cb();
</script>

var cb;
功能剂量测定法(c){
cb=c;
}
var myFunc=函数(){
窗口警报(“测试”);
}
剂量测定法(myFunc);
cb();

如果你做了,cb=c()您将立即执行函数
c
,并将值返回到
cb
如果希望变量
cb
作为
c
的结果,请执行以下操作。否则,不运行赋值。

您有3个选项可将变量设置为函数

  • var fn=functionname
  • var fn=function(param){}这将是一个匿名函数
  • var fn=函数FunctionName(param){}这将是一个命名函数,在调试时很方便,因为它将为您提供函数名(
    console.log(c);
  • 您可以像调用函数那样调用它;或者将它传递给函数
    var returnVal=myFunc(fn);
    在myFunc调用参数的地方,让它像
    inFn
    一样

    值得注意的是: 因为这样的函数与全局上下文相关,所以您可以将对象绑定到它,改变它的作用域。这使您有可能引用绑定的对象。
    this
    。(请注意,并不是所有浏览器都支持绑定,但有相当多的多边形填充。)

    • fn.bind(对象);

    或者在另一个上下文中用
    fn.call(object,param1,param2)
    fn.apply(object,[param1,param2])
    调用它。写得不错。

    c.call是你要找的,所以你应该调用函数doSomethingThank!但是:“如果你想要的是回调,那么你不需要全局变量。”,是的,我需要,因为我需要从其他函数中调用该函数,但我无法将其作为arg传递