JS实现99瓶啤酒歌词打印函数,console.log生效但return失效如何解决
问题产生原因
- JavaScript 函数执行时遇到
return语句会直接终止运行,若直接将循环内的console.log替换为return,第一次循环就会触发返回,后续98次循环不会执行,只能拿到第一行歌词。 console.log支持多次调用逐行输出内容,但一个函数仅能通过return返回一个值,无法通过循环内多次return输出全部歌词。
解决方法
提前声明存储变量收集所有歌词,全部拼接完成后统一返回即可,修改后的参考代码如下:
function beer() { // 用数组存储每一行歌词 const lyricsArr = []; let n = 99; while (n > 1) { const m = n - 1; const line = `${n} bottles of beer on the wall, ${n} bottles of beer. Take one down and pass it around, ${m} bottles of beer on the wall.`; lyricsArr.push(line); n--; } lyricsArr.push("No more bottles of beer on the wall, no more bottles of beer. Go to the store and buy some more, 99 bottles of beer on the wall."); // 统一返回,join('\n')是把所有行用换行符拼接成完整字符串,也可以直接返回数组按需处理 return lyricsArr.join('\n'); }
调用时直接用console.log(beer())即可看到和原写法一致的完整歌词输出。
内容的提问来源于stack exchange,提问作者Shruti Rai
相关产品推荐
相关产品推荐

