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的函数是一流的@罗兰·比肖普:函数和其他东西一样都是值,所以它们可以在变量中传递。