在javascript中将函数放入其他空函数的目的是什么?

时间:2016-01-22 15:49:09

标签: javascript angularjs function callback

我是Javascript和AngularJS以及Web开发的新手,当我浏览Angular docs on directives时,我遇到了这段代码:

// start the UI update process; save the timeoutId for canceling
timeoutId = $interval(updateTime(), 1000);

为什么不能这样写:

{{1}}

这样还不是回调函数吗?它仍然是一个函数内的函数。在函数函数中使用函数有什么意义?

2 个答案:

答案 0 :(得分:1)

因为,函数将立即被调用,返回的值将被指定为区间的回调。

但是,函数引用可以作为回调函数传递,该函数将在指定的时间间隔后调用。

timeoutId = $interval(updateTime, 1000);
                                ^: Removed ()

答案 1 :(得分:1)

如果你有这样的功能:

timeoutId = $interval(function () {
    updateTime();
}, 1000);
与调用

相比,没有太多实际区别
timeoutId = $interval(updateTime, 1000); // Notice NO parens after "updateTime"!

从技术上讲,第一个版本调用的函数除了调用另一个函数之外什么都不做,这意味着额外的开销很小,并不值得担心。

你可能会做这样的事情的一个原因是代码可读性:可以说“看到”第一个版本将回调作为$ interval()的第一个参数传递更容易,因为它是作为函数写出来的。它对代码的运行速度没有多大影响,但如果您或其他人需要阅读并了解将来发生的事情,它可以为您节省一些开发时间。