0

这可能非常容易,但我无法解决正在发生的事情。


function doSomething(a)
{
   var num=10;
   return setTimeout(
   function(){ a(num); }, 1000);
}

唯一真正让我感到困惑的是a(num)部分。它实际上是做什么的?
提醒:我真的在问,因为我不熟悉 javascript 语法。

4

3 回答 3

3

执行时function doSomething()传递参数aa也是一些在 1 秒后过期时调用的参数,然后调用function传递的参数调用setTimeout()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);
}
于 2012-04-14T19:41:27.233 回答
0

a使用变量引用的值num作为参数调用变量引用的函数。

于 2012-04-14T19:40:35.890 回答
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;});
于 2012-04-14T19:52:26.890 回答