繁体   English   中英

为什么函数返回未定义?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM