JavaScript课程练习:如何正确返回字符串类型的姓名?
问题:实现返回姓名字符串的
getUserName函数 测试要求
课程提供的测试代码如下,要求调用getUserName()时,返回值必须是字符串类型:
describe("Solution", () => { it("should return a string as a name", () => { const name = getUserName(); if (typeof name === "string") { console.log(`Hello, ${name}!`); } expect(name).to.be.a("string"); }); });
你的现有代码问题
function getUserName("Jawwad") { let name = getUserName() if (typeof name === String) { console.log("Hello " + name); } return name; }
这段代码存在几个关键错误:
- 函数参数定义错误:不能直接将字符串字面量
"Jawwad"作为参数名,且测试要求函数无参数调用 - 无限递归:函数内部调用
getUserName()会导致死循环,最终栈溢出 typeof判断错误:typeof返回的是字符串类型的结果,应该和"string"比较,而非构造函数String- 冗余逻辑:测试代码中的判断和打印逻辑不需要写在你的函数里,函数只需要返回名字字符串即可
分步修正方案
- 修正函数定义:定义无参数的
getUserName函数 - 移除递归调用:直接指定要返回的名字,不需要调用自身
- 删除冗余代码:去掉不必要的
if判断和console.log,这些是测试逻辑 - 返回名字字符串:直接返回你的名字
"Jawwad"
正确代码
function getUserName() { return "Jawwad"; }
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

