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传递