如果我输入 return 关键字,为啥 JS for 循环不起作用? [复制]

Posted

技术标签:

【中文标题】如果我输入 return 关键字,为啥 JS for 循环不起作用? [复制]【英文标题】:why JS for loop doesn't work if i put return keyword? [duplicate]如果我输入 return 关键字,为什么 JS for 循环不起作用? [复制] 【发布时间】:2020-03-11 19:53:06 【问题描述】:

当我像这个例子一样输入 return 关键字时:

for (let z = 0; z < 5; z++) 
   return console.log('one');
  
//the result is : 'one'

但是当我像这个例子一样删除 return 关键字时:

for (let z = 0; z < 5; z++) 
   console.log('one');
  
//the result is : 'one', 'one', 'one', 'one', 'one'

循环工作并返回五个'一' 这是什么原因?

【问题讨论】:

因为return 在第一次迭代后会以同样的方式跳出循环,如果您将break; 放入其中。 return 完全退出函数作用域,并将值返回给调用者。我不确定你在上面的例子中试图通过使用它来完成什么,因为console.log('one') 本身不返回任何值,所以你会返回undefined 另外:“循环工作并返回五个“一”,这是什么原因?” - 请注意 returning 是不同于日志记录。您的函数将“一次”记录到控制台五次 - 但它从不返回任何内容。 【参考方案1】:

return 返回值,立即结束函数。

它不会开始循环的下一次迭代,因为那是函数的一部分(您已从中返回)。

【讨论】:

【参考方案2】:

循环是一个语句,它表示“根据条件执行 thing 多次”。但是如果你return,你是在告诉循环停止,立即退出并给你返回的任何东西。

在这种情况下,console.log 不直接任何事情,它只是作为副作用打印到控制台。它没有返回任何东西。

它不会解析为一个值,因此您在第一个示例中所做的实际上是在循环一次迭代后返回 undefined(并且 console.log 仍然将该值打印到控制台,因为您'已经注意到)。

【讨论】:

以上是关于如果我输入 return 关键字,为啥 JS for 循环不起作用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥我在c编程中不能成功使用return选项?

为啥 SwiftUI 中的 getter 即使多行也不需要使用 return 关键字?

为啥返回函数叫return?

为啥返回带有箭头函数的对象时,array.map 中需要 return 关键字?

如果它是引用类型,为啥我可以清空一个数组? [复制]

为啥 int main() 编译?