如何将firstName和lastName拼接为fullName?代码返回undefined求助
问题分析与修复
你的代码存在三个核心问题,导致运行后返回undefined:
- 函数内直接使用
firstName和lastName,但这些变量未定义,实际应该访问传入的personObj的对应属性 - 你直接重新赋值了全局的
person变量,而非基于传入的对象做处理 - 函数没有任何返回语句,调用后默认返回
undefined
修复方案1:修改传入的原对象
如果想直接给原对象添加fullName属性,可这样写:
const person = { firstName: 'Joseph', lastName: 'Magnolia', ageInYears: 34 } function addFullName(personObj) { personObj.fullName = `${personObj.firstName} ${personObj.lastName}`; } addFullName(person); console.log(person.fullName); // 输出 "Joseph Magnolia"
修复方案2:返回新对象(不修改原对象)
如果不想改动原对象,返回一个包含fullName的新对象:
const person = { firstName: 'Joseph', lastName: 'Magnolia', ageInYears: 34 } function addFullName(personObj) { return { ...personObj, // 复制原对象的所有属性 fullName: `${personObj.firstName} ${personObj.lastName}` }; } const personWithFullName = addFullName(person); console.log(personWithFullName.fullName); // 输出 "Joseph Magnolia" console.log(person.fullName); // 输出 undefined(原对象未被修改)
为什么原代码会返回undefined?
你的addFullName函数没有编写return语句,JavaScript中所有无返回值的函数都会默认返回undefined。同时函数内的firstName和lastName属于未定义变量,在非严格模式下会被当作全局变量(值为undefined),拼接后会得到NaN,但这不是返回undefined的直接原因——直接原因是函数没有返回值。
内容的提问来源于stack exchange,提问作者Jb97
相关产品推荐
相关产品推荐

