我有一个执行以下功能的方法,但我注意到我可以在两种方式中使用return this.tasks.forEach(function(task) {
task.completed = true;
});
。
进入函数后:
{{1}}
一旦超出功能:
{{1}}
两次我都得到了正确的结果,但我想知道是否有任何不同。
答案 0 :(得分:1)
就回调函数内部的return语句而言,除了第一个例子中存在不必要的return
语句之外没有区别。 forEach
回调函数的返回值未使用。
但是,回调函数外部的return语句可能会产生功能差异,因为它将在运行它的函数中返回undefined
。undefined
是默认的返回值,所以你只会如果现在被跳过后面有代码,请注意区别。当然,在回调中调用return
将不会返回父函数,如第二个示例所示。
forEach
:
forEach()
为每个数组元素执行一次callback
函数;与every()
和some()
不同,它始终返回值undefined
。
答案 1 :(得分:1)
它们非常不同,但在这种情况下不一定会产生任何不同。在函数内部使用return task.completed = true
只会让它每次都返回true,Array.prototype.forEach
会忽略它。另一方面,返回forEach的结果,它总是undefined
(它是一个void函数)。