JavaScript函数返回值为undefined问题求助
问题分析与解决方案
嘿,我来帮你捋捋问题出在哪!你的代码里有两个关键问题导致了undefined的出现,咱们一个个解决:
1. getUsername函数的返回逻辑有漏洞
当用户点击取消按钮(返回null)、输入默认文本"Type Here"或者空字符串时,你只写了return;——这时候函数会默认返回undefined,这就是nameUser变成undefined的直接原因。
咱们可以修改函数逻辑,让用户重新输入有效内容,避免返回无效值:
function getUsername() { let f1CustomerName = prompt("Please enter your name", "Type Here"); // 校验输入是否有效:取消、默认值、空字符串(含纯空格)都算无效 if (f1CustomerName === null || f1CustomerName === "Type Here" || f1CustomerName.trim() === "") { alert("请输入有效的用户名哦!"); return getUsername(); // 递归调用,直到用户输入有效内容 } else { return f1CustomerName; } }
2. 调用getinteger时没有传递参数
你定义getinteger函数时声明了需要一个nameUser参数,但调用的时候是getinteger();——没有传任何值,所以函数内部的nameUser自然就是undefined了。
修正后的调用方式要把之前获取到的nameUser传进去,同时咱们还可以给函数加个小校验,避免无效参数:
var nameUser = getUsername(); function getinteger(username) { // 先校验用户名是否有效 if (!username) { alert("用户名无效,请重新操作!"); return; } let integer = prompt(`${username}, Please enter an integer`); // 额外优化:校验输入是否是整数 if (Number.isInteger(parseInt(integer))) { alert(`Hello ${username}! This is your integer: ${integer}`); } else { alert("请输入有效的整数哦!"); } } getinteger(nameUser); // 这里一定要传递nameUser参数!
这样修改后,就能正常获取用户名并传递给getinteger函数啦~
内容的提问来源于stack exchange,提问作者grizzly23
相关产品推荐
相关产品推荐

