Javascript 为什么函数返回未定义?

Javascript 为什么函数返回未定义?,javascript,arrays,function,undefined,Javascript,Arrays,Function,Undefined,因此,我最近开始学习如何编写代码,并且我正在试图找出如何创建一个函数,该函数将接受一个字符串,并在满足条件的情况下在末尾添加后缀“ay”。出于某种原因,每当我运行函数时,我都会得到“未定义”。我已经试着重写了几次,但我总是出错,我不知道是什么!如果有人能看一下,解释一下我错过了什么,我会非常感激的 function translate(val) { let piggy = 'ay' let newVal = Array.from(val); let finalVal;

因此,我最近开始学习如何编写代码,并且我正在试图找出如何创建一个函数,该函数将接受一个字符串,并在满足条件的情况下在末尾添加后缀“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')
函数转换(val){
让小猪=‘是’
设newVal=Array.from(val);
让最后的;
设i=0;
而(i
乍一看,您正在从数组中减去一个
数字。这将返回
NaN
,甚至不会命中while循环。(
x
始终为false)

因为您没有点击while循环,所以函数只是存在并且从不返回值。这就是为什么您会收到
未定义的

如果要在新创建的数组上迭代,则需要使用
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')
let piggy='ay'
设newVal=Array.from(val);
让最后的;
设i=0;
而(i
您缺少一条
return
语句,我不确定您在这里想做什么。。。如果字符串以元音开头,是否尝试将
'ay'
附加到该字符串

如果是,这是代码的简化版本:

function translate( val ) {
  if([ "a", "e", "i","o","u"].includes(val[0])) {
     return val + 'ay';
     }
   else return val;
}

什么是piggy?它是在哪里定义的?当你将一个数字与一个数组进行比较时,你的程序甚至不会进入数组loop@Derek.W,对不起,刚刚编辑进来
piggy
是我想添加到字符串末尾的后缀!是的,什么ⵍⵢⴻⵙ 说。在while循环后返回一个值,您将看到结果。
while(i
应替换为
while(i
。我完全没有注意到这一点!谢谢你的解释基本上我正在尝试写一个函数,将一个单词翻译成拉丁语,但这超出了我的知识范围。谢谢你,顺便说一句!!