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
相关产品推荐
相关产品推荐

