我在W3学校找到了this v.b
v.c
v.y
v.z
方法示例,并发现了一些我无法解释的内容。例子是:
setTimeout()
......工作正常。但是当我把它改成
时myVar = setTimeout(alertFunc, 3000);
......警报立即触发。为什么?不应该是一样的吗?
答案 0 :(得分:6)
不应该一样吗?
不,完全没有。
self.get_object().var2
将setTimeout(alertFunc, 3000)
(对函数的引用)的值传递给alertFunc
。 setTimeout
存储该函数引用,以便在三秒后调用它。
setTimeout
调用 setTimeout(alertFunc(), 3000)
,并将其返回值传递给alertFunc
。完全按setTimeout
调用 foo(bar())
的方式将其返回值传递给bar
。
答案 1 :(得分:2)
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.DropDownListFor(model => model.td_company_name, ViewBag.Listcompany as IEnumerable, new { @class = "form-control" }) }
接受函数作为第一个参数,时间作为第二个参数。我希望你也听说过返回函数的函数。因此,对于这种情况,您也可以在那里调用函数。
当您将setTimeout()
添加到任何功能时,它会立即调用它。因此,您调用该函数并返回任何内容以执行()
。
案例1
setTimeout
这里传递功能本身以在3秒后执行。
案例2
setTimeout(myFunc, 3000);
这里传递函数执行的返回值以在3秒后执行。
答案 2 :(得分:1)
myVar = setTimeout(alertFunc(), 3000);
与以下相同:
aF = alertFunc(); myVar = setTimeout(aF, 3000);
通过此,您可以看到在alertFunc
之外调用setTimeout
。