JS循环内if搭配else return运行无输出问题咨询
问题根因
代码无输出的核心错误是内层循环中多余的else return;语句,它会直接终止整个脚本的执行,导致后续逻辑完全无法运行:
- 外层循环第一次读取到输入字符串的首字符
c,进入内层元音遍历循环 - 内层循环第一次匹配的元音是数组第一个元素
a,c与a不相等,直接触发else return;逻辑 - 顶层作用域下执行
return会直接终止当前脚本运行,后续的循环遍历、字符串拼接、控制台打印逻辑全部不会执行,自然没有任何输出。 - 哪怕首字符是元音,这个逻辑依然错误:比如首字符是
o,第一次和a比对不相等时依然会触发return,根本走不到后面匹配o的分支。
修正方法
这个需求只需要提取字符串中所有的元音字符,不需要给if匹配分支加else退出逻辑,直接删除else return;这行代码即可得到预期结果:
let input = "coconut closet"; const vowels = ["a", "e", "i", "o", "u"]; let resultArray = []; for (let i = 0; i < input.length; i++) { for (let j = 0; j < vowels.length; j++) { if (input[i] === vowels[j]) { resultArray.push(vowels[j]); } } } let resultString = resultArray.join('') console.log(resultString); // 输出oouoe,符合预期
如果要简化代码,可以直接用数组的includes方法判断当前字符是否属于元音,省去嵌套循环:
let input = "coconut closet"; const vowels = ["a", "e", "i", "o", "u"]; let resultArray = []; for (const char of input) { if (vowels.includes(char)) { resultArray.push(char); } } console.log(resultArray.join(''));
内容的提问来源于stack exchange,提问作者kanzyxx
相关产品推荐
相关产品推荐

