我是Javascript和AngularJS以及Web开发的新手,当我浏览Angular docs on directives时,我遇到了这段代码:
// start the UI update process; save the timeoutId for canceling
timeoutId = $interval(updateTime(), 1000);
为什么不能这样写:
{{1}}
这样还不是回调函数吗?它仍然是一个函数内的函数。在函数函数中使用函数有什么意义?
答案 0 :(得分:1)
因为,函数将立即被调用,返回的值将被指定为区间的回调。
但是,函数引用可以作为回调函数传递,该函数将在指定的时间间隔后调用。
timeoutId = $interval(updateTime, 1000);
^: Removed ()
答案 1 :(得分:1)
如果你有这样的功能:
timeoutId = $interval(function () {
updateTime();
}, 1000);
与调用相比,没有太多实际区别
timeoutId = $interval(updateTime, 1000); // Notice NO parens after "updateTime"!
从技术上讲,第一个版本调用的函数除了调用另一个函数之外什么都不做,这意味着额外的开销很小,并不值得担心。
你可能会做这样的事情的一个原因是代码可读性:可以说“看到”第一个版本将回调作为$ interval()的第一个参数传递更容易,因为它是作为函数写出来的。它对代码的运行速度没有多大影响,但如果您或其他人需要阅读并了解将来发生的事情,它可以为您节省一些开发时间。