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

Javascript:无法真正理解函数返回,javascript,Javascript,这可能是难以置信的简单,但我无法解决发生了什么 function doSomething(a) { var num=10; return setTimeout( function(){ a(num); }, 1000); } 唯一让我困惑的是a(num)部分。它实际上是做什么的?提醒:我真的在问,因为我不熟悉javascript语法。它调用变量a引用的函数,使用变量num引用的值作为参数。它调用变量a引用的函数,使用变量num引用的值作为参数。当执行函数doSomethin

这可能是难以置信的简单,但我无法解决发生了什么


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

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

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

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

当执行
函数
doSomething()
时,会传递参数
a
a
也是一些
函数
,当
setTimeout()在1秒后过期时调用该函数,
然后调用
函数
a()
传递名为
num的参数

:


当执行
函数
doSomething()
时,会传递参数
a
a
也是一些
函数
,当
setTimeout()在1秒后过期时调用该函数,
然后调用
函数
a()
传递名为
num的参数

:


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

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

但在这里,a是剂量测量的输入。那么它是如何作为一个函数工作的呢?@rolandbishop JavaScript的函数是一流的@罗兰·比肖普:函数和其他函数一样都是值,所以它们可以在变量中传递。但在这里,a是doSomething的输入。那么它是如何作为一个函数工作的呢?@rolandbishop JavaScript的函数是一流的@罗兰·比肖普:函数和其他东西一样都是值,所以它们可以在变量中传递。