如果我输入 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
。
另外:“循环工作并返回五个“一”,这是什么原因?” - 请注意 return
ing 是不同于日志记录。您的函数将“一次”记录到控制台五次 - 但它从不返回任何内容。
【参考方案1】:
return
返回值,立即结束函数。
它不会开始循环的下一次迭代,因为那是函数的一部分(您已从中返回)。
【讨论】:
【参考方案2】:循环是一个语句,它表示“根据条件执行 thing 多次”。但是如果你return
,你是在告诉循环停止,立即退出并给你返回的任何东西。
在这种情况下,console.log
不直接做任何事情,它只是作为副作用打印到控制台。它没有返回任何东西。
它不会解析为一个值,因此您在第一个示例中所做的实际上是在循环一次迭代后返回 undefined
(并且 console.log 仍然将该值打印到控制台,因为您'已经注意到)。
【讨论】:
以上是关于如果我输入 return 关键字,为啥 JS for 循环不起作用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
为啥 SwiftUI 中的 getter 即使多行也不需要使用 return 关键字?