You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 14:55:15