为何自定义传入的noteTitle参数在函数中无法生效?求解析与方案
问题原因
你传入的noteTitle参数没生效,核心原因是代码里用了点语法直接写死属性名:notes.noteTitle = message。这里的noteTitle是字符串字面量,会被当成对象的固定属性名,而不是你传入的参数变量——说白了,你传的参数根本没被用到,函数一直在给notes对象的noteTitle这个固定属性赋值,不管你传什么标题参数都没用。
替代方案
方案1:动态修改传入的对象
把点语法改成方括号语法,用动态属性名引用传入的noteTitle参数:
const createNote = (noteTitle, message, notes) => { notes[noteTitle] = message; return notes; };
方案2:创建独立新笔记对象(更推荐)
如果你的需求是生成新笔记而非修改原有对象,直接返回新对象避免副作用:
const createNote = (noteTitle, message) => { return { [noteTitle]: message }; };
方案优势
- 方案1:真正利用了传入的
noteTitle参数,实现了动态设置对象属性的需求,完全匹配你设计这个函数的初衷。 - 方案2:避免了直接修改外部传入的
notes对象(无副作用),函数逻辑更纯粹,返回的独立新笔记不会影响原对象,代码更健壮、可维护性更高。
内容的提问来源于stack exchange,提问作者gschuchardt
相关产品推荐
相关产品推荐

