这可能非常容易,但我无法解决发生的事情。
function doSomething(a)
{
var num=10;
return setTimeout(
function(){ a(num); }, 1000);
}
唯一让我困惑的是 a(num)部分。实际上它做了什么?
提醒:我真的在问,因为我不熟悉javascript语法。
答案 0 :(得分:3)
执行function
doSomething()
时会传递参数a
,
a
也是function
,当setTimeout()
在1秒后过期时会调用function
,
然后调用a()
num
传递名为// call doSomething() passing the test() function as an argument
doSomething(test);
// takes a number as an argument and shows an alert with that value
function test(number)
{
alert(number);
}
// takes a function as an argument that will perform a 1 second timeout then execute the function called a
function doSomething(a)
{
var num=10;
return setTimeout(
function(){ a(num); }, 1000);
}
{{1}}
答案 1 :(得分:0)
它使用变量a
引用的值作为参数调用变量num
引用的函数。
答案 2 :(得分:0)
setTimeout 会返回 timeoutID ,可以使用 clearTimeout 取消它,所以如果你运行 doSomething 很多时候,你会得到不同的整数,代表不同的 timeoutID 。
在您的情况下 a 必须是一个功能,因此您可以使用参数 num
来调用它示例:
function doSomethingElse (justANumber) {
return justANumber + 1;
}
// Here you call your function
doSomething(doSomethingElse);
// or another special case
doSomething(function (justANumber) {return justANumber + 1;});