我有这种情况:
<script>
var cb;
function doSomething(c) {
cb = c();
}
cb();
</script>
但它不起作用。我想将一个变量设置为函数,以进行其他函数调用的回调..有什么想法吗?
我有这种情况:
<script>
var cb;
function doSomething(c) {
cb = c();
}
cb();
</script>
但它不起作用。我想将一个变量设置为函数,以进行其他函数调用的回调..有什么想法吗?
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>
如果你这样做,cb=c();
你将立即执行函数c
并将值返回到,cb
如果你想要变量cb
作为 的结果c
,请这样做。否则,分配而不运行它。
您有 3 个选项可以将变量设置为函数
var fn = functionname;
var fn = function(param){};
这将是一个匿名函数var fn = function FunctionName(param){};
这将是一个命名函数,在调试时会派上用场,因为它会为您提供一个函数名称(console.log(c);
你不能像这样调用它var returnVal = fn();
或将它传递给var returnVal = myFunc(fn);
myFunc 调用参数的函数,让它inFn
像inFn();
值得注意的是:由于此类函数与全局上下文相关,因此您可以将对象绑定到它以更改其范围。这使您this
可以引用绑定的对象。(请注意,并非所有浏览器都支持绑定,因为它是由ECMAScript 5定义的,但那里有相当多的 polyfill。)
fn.bind(object);
或者在另一个上下文中使用 or 调用fn.call(object, param1, param2)
它fn.apply(object, [param1, param2])
。很好地写在这个指向 odetocode.com/blog 的链接上。