[英]Why does function return undefined?
所以,我最近开始学习如何编码,我正在尝试弄清楚如何创建一个函数,如果满足条件,该函数将接受一个字符串并在末尾添加后缀“ay”。 出于某种原因,每当我运行该函数时,我都会收到“未定义”。 我试过重写它几次,但我总是出错,我无法弄清楚它是什么! 如果有人可以查看此内容并解释我所缺少的内容,我将不胜感激!
function translate(val) {
let piggy = 'ay'
let newVal = Array.from(val);
let finalVal;
let i = 0;
while (i < newVal - 1) {
if (newVal[0] == 'a' || newVal[0] == 'e' || newVal[0] == 'i' || newVal[0] == 'o' || newVal[0] == 'u') {
finalVal = newVal.join('') + piggy;
return finalVal;
} else {
finalVal = newVal;
return finalVal;
}
i++
}
}
translate('apple')
乍一看,您正在从数组中减去一个number
。 这将返回NaN
并且甚至没有命中 while 循环。 ( x < NaN
总是假的)
因为您没有遇到 while 循环,所以函数只是存在并且从不返回值。 这就是您收到undefined
。
如果要迭代新创建的数组,则需要使用newVal.length
。
固定代码如下:
let piggy = 'ay'
let newVal = Array.from(val);
let finalVal;
let i = 0;
while (i < newVal.length - 1) {
if (newVal[0] == 'a' || newVal[0] == 'e' || newVal[0] == 'i' || newVal[0] == 'o' || newVal[0] == 'u') {
finalVal = newVal.join('') + piggy;
return finalVal;
} else {
finalVal = newVal;
return finalVal;
}
i++
}
}
translate('apple')
您缺少return
语句,我不确定您要在这里做什么...如果字符串以元音开头,您是否尝试将'ay'
附加到字符串?
如果是,这是您代码的简化版本:
function translate( val ) {
if([ "a", "e", "i","o","u"].includes(val[0])) {
return val + 'ay';
}
else return val;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.