在方法的回调函数外部和内部返回值的差异

时间:2015-06-06 01:21:45

标签: javascript

我有一个执行以下功能的方法,但我注意到我可以在两种方式中使用return this.tasks.forEach(function(task) { task.completed = true; });

进入函数后:

{{1}}

一旦超出功能:

{{1}}

两次我都得到了正确的结果,但我想知道是否有任何不同。

2 个答案:

答案 0 :(得分:1)

就回调函数内部的return语句而言,除了第一个例子中存在不必要的return语句之外没有区别。 forEach回调函数的返回值未使用。

但是,回调函数外部的return语句可能会产生功能差异,因为它将在运行它的函数中返回undefinedundefined是默认的返回值,所以你只会如果现在被跳过后面有代码,请注意区别。当然,在回调中调用return将不会返回父函数,如第二个示例所示。

摘自the MDN page on forEach

  

forEach()为每个数组元素执行一次callback函数;与every()some()不同,它始终返回值undefined

答案 1 :(得分:1)

它们非常不同,但在这种情况下不一定会产生任何不同。在函数内部使用return task.completed = true只会让它每次都返回true,Array.prototype.forEach会忽略它。另一方面,返回forEach的结果,它总是undefined(它是一个void函数)。