Javascript:无法真正理解函数返回

时间:2012-04-14 19:39:10

标签: javascript

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


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

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

3 个答案:

答案 0 :(得分:3)

执行function doSomething()时会传递参数aa也是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); }

的参数

Example usage

{{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;});