我很困惑如何调用函数的方式。有时它们以functionName()
格式提供,有时仅以名称functionName
提供。
例如在HTML中,当我们调用onclick="functionName()"
但在Javascript中我们只是将函数functionName
作为参数传递给另一个函数。
setTimeout(functionName, 1000);
这是一本书的例子,假设我们必须传递一个带参数的回调函数。
var mySetTimeout = function(callback, delay){
var dollars = 100;
callback(dollars);
};
var onCompletion = function(dollars,name){
console.log(name + ": Here's your $" + dollars);
};
var getMoney = function (name) {
var requestB = mySetTimeout(function(dollars){
onCompletion(dollars,name);
}, 1000);
};
getMoney('Simon');
在 mySetTimeout 函数中,我们将回调作为参数传递但没有任何内容。但是稍后在mySetTimeout函数中,我们传递带有参数的回调函数。
任何人都可以向我解释所有案件吗?谢谢!
答案 0 :(得分:1)
你需要了解一些关于回调函数,匿名函数等的东西才能得到这个想法。在JS中使用匿名函数非常常见。
我会尽力以最简单的方式向您解释。在您的代码中,在第一行:请参阅我的评论。
var mySetTimeout = function(callback, delay){ // Note 01
var dollars = 100;
callback(dollars); // Note 02
};
注意01:这里,回调只不过是一个字符串参数。它不是一个函数,而是一个函数名。你告诉你要运行一个名为" callback"的函数。你传递那个名字然后通过简单地调用callback()
来运行该功能,其中"回调"是您在上面传递给此函数的参数。
注意02:在这里,您实际运行的函数具有您在上面定义的名称。
在这行代码中,
var requestB = mySetTimeout(function(dollars){
onCompletion(dollars,name);
}, 1000);
你可以看到而不是"回调" string参数,你已经定义了函数本身,因为在" mySetTimeout"函数,它将第一个参数作为函数运行。
基本上,你可以做同样的事情:
var myCallbackFunction = function(dollars){
onCompletion(dollars,name);
};
var requestB = mySetTimeout(myCallbackFunction, 1000);
现在你看到第一个参数包含一个函数,以及何时在" mySetTimeout"中调用它。函数,您实际运行上面定义的函数。基本上,我试图解释你可以在变量中保存一个函数。这就是匿名函数/ lambda函数的目的。
我试图用最简单的方式解释你。希望这可以帮助。 Google" JavaScript匿名函数"你将有足够的东西要学习。
答案 1 :(得分:-2)
mySetimeout 功能可以通过两种方式使用:
语法:
var timeoutID = window.setTimeout(func, delay, [param1, param2, ...]);
或
var timeoutID = window.setTimeout(code, delay);
希望这会有所帮助:)