Javascript 方法的回调函数内外返回值的差异

Javascript 方法的回调函数内外返回值的差异,javascript,Javascript,我有一个执行以下函数的方法,但是我注意到我可以在两种方式中使用return 进入功能后: this.tasks.forEach(function(task) { return task.completed = true; }); return this.tasks.forEach(function(task) { task.completed = true; }); 一旦超出功能范围: this.tasks.forEach(function(task) { retur

我有一个执行以下函数的方法,但是我注意到我可以在两种方式中使用
return

进入功能后:

this.tasks.forEach(function(task) {
    return task.completed = true;
});
return this.tasks.forEach(function(task) {
    task.completed = true;
});
一旦超出功能范围:

this.tasks.forEach(function(task) {
    return task.completed = true;
});
return this.tasks.forEach(function(task) {
    task.completed = true;
});

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

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

但是,回调函数外部的return语句可能会产生功能上的差异,因为它将在运行它的函数中返回
undefined
undefined
是默认的返回值,因此只有当后面有代码被跳过时,您才会注意到差异。当然,在回调函数中调用
return
不会返回父函数,正如第二个示例所示

摘录自:
forEach()
对每个数组元素执行一次
回调
函数;与
each()
some()
不同,它总是返回
未定义的值


它们非常不同,但在这种情况下并不一定有什么不同。函数中的
return task.completed=true
每次都返回true,这被
Array.prototype.forEach
忽略。另一种方式是返回forEach的结果,它总是
未定义的
(这是一个无效函数)。

下面是一个例子,应该可以使差异更加明显:
function foo(){return[1,2,3].map(function(){5;});}
vs
function foo(){[1,2,3].map(function(){return 5;})}
vs
function foo(){return[1,2,3].map(function(){return 5;});}
。使用
console.log(foo());
调用每一个函数。我遵循的一般规则是“如果我需要返回(某物)”,然后使用
return
”。很难说
return
外部(第二种情况)“没有任何区别"--它可能不会返回任何有用的东西,但它确实会返回,这与不返回完全不同,除非它是函数中的最后一行。在您看来,这两个示例中哪一个是正确的用法?@LoveAndHappiness:都不是。
forEach
不会返回任何东西,也不会对返回值o做任何事情f回调。这里根本不应该有
return
语句。