在JavaScript中如何使用变量作为键更新对象或Map?
问题本质
JavaScript 对象的点访问符会将后面的标识符解析为固定字符串的静态属性名,不会识别变量值。你写的task.key = value实际是给task新增了一个名为key的属性,而非修改key变量指向的目标属性。而task."$key"的写法不符合JavaScript语法规范,会直接抛出语法错误。
修复方案
使用方括号动态属性语法实现变量作为属性名的需求,方括号内的表达式会被解析后的值作为属性名操作对象属性。
修改后的可运行代码:
const task = { title : 'update UI for Login', description:'update UI for Login', status : 'open' } const update = (key,value) =>{ // 方括号内的key会被解析为变量的值 task[key] = value; } console.log(task); update('title','Sign Up'); console.log(task);
运行后可以看到title属性已被正确修改为Sign Up,不会新增多余属性。
语法补充说明
- 点语法仅适合操作固定字面量属性名的场景,所有动态生成、运行时才能确定的属性名,都需要使用方括号语法操作。
内容的提问来源于stack exchange,提问作者Swaroop Maddu
相关产品推荐
相关产品推荐

