我有这样的情况:传递函数
<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();
}
。
另外,你应该调用函数doSomething – 2013-04-06 21:21:55
谢谢!然而:“但是,如果你想要的是一个回调,那么你不需要一个全局变量”,是的,我需要'因为我需要从其他函数回忆该函数,我不能通过它作为arg – Grork 2013-04-06 21:38:01
您需要分配CB先用你的函数:
<script>
var cb;
function doSomething(c) {
cb = c;
}
var myFunc = function(){
window.alert("test");
}
doSomething(myFunc);
cb();
</script>
如果你这样做cb=c();
将执行功能c
瞬间,如果你想变cb
为c
结果值返回给cb
,这样做。否则,分配而不运行它。
你有3只选择一个变量设置为functiion
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支持,但也有相当一些polyfills在那里。)
fn.bind(object);
或用fn.call(object, param1, param2)
或fn.apply(object, [param1, param2])
调用它在另一种情况下。尼斯写在这Link to odetocode.com/blog。
c.call是你在找什么 – 2013-04-06 21:21:48