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

JavaScript函数创建对象并推入数组问题:代码调用返回undefined求助

问题分析与修复方案

嘿,我一眼就看到几个关键问题啦,咱们一个个捋清楚:

1. 函数内部没有正确创建对象

你在AddToCollection函数里直接写titleName: titleName这种写法是语法错误——JS根本识别不出你要创建对象,必须用**对象字面量{}**把这些键值对包裹起来才行。

2. push的位置完全错了

你把{ collection.push(); };写在了函数外面,这行代码只会在页面加载时执行一次(而且还没传任何内容),和函数调用没有半毛钱关系!必须把push操作放到函数内部,并且把你创建的新对象作为参数传进去。

3. 函数无返回值+调用时缺参数

原函数里没有任何return语句,调用它自然会返回undefined;另外你调用AddToCollection();时没传参数,就算函数正常工作,新对象的属性也会是undefined哦。


修复后的完整代码:

let collection = [];

function AddToCollection(titleName, artist, year) { 
    // 创建新的建筑版画条目对象
    const newArtwork = {
        titleName: titleName,
        artist: artist,
        year: year
        // 或者用ES6简写:titleName, artist, year(键名和变量名一致时可以这么写)
    };
    // 将新对象推入collection数组
    collection.push(newArtwork);
    // 可选:返回新创建的对象,方便后续直接操作它
    return newArtwork;
};

// 调用时记得传入对应参数
AddToCollection("巴黎圣母院版画", "Claude Monet", 1890);
console.log(collection); // 现在控制台能看到数组里已经有这个条目啦!

小补充:

如果想让对象的键名更语义化,比如把titleName改成title,直接在对象里写title: titleName就行;另外JS里函数名一般用小驼峰命名(比如addToCollection),这是通用编码规范,不过不是硬性要求,看你个人习惯~

内容的提问来源于stack exchange,提问作者atculpepper

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 18:37:35