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

为何传入函数的参数无法作为对象的键名使用?

为什么你的对象键名不是传入的'cat'?

嘿,这个问题其实是JavaScript对象字面量的一个常见小坑~

你写的{x: y}这种语法里,键名x会被直接当作字符串字面量处理,而不是去读取变量x的值。所以不管你传入的x是'cat'还是别的什么,对象的键都会是字符串"x",这就是为什么你看不到'cat'作为键名的原因,箭头函数里也是一样的逻辑哦。

解决办法有两种:

  • 使用ES6的计算属性名:把键名用方括号[]包裹起来,这样JavaScript就会计算括号里表达式的值,把它作为对象的键名。修改后的代码长这样:
"use strict";
let functionTest = function(x, y) {
  return console.log({[x]: y}); 
}
functionTest('cat', 153); // 现在会输出 {cat: 153}

箭头函数版本也一样:

"use strict";
let functionTest = (x, y) => console.log({[x]: y});
functionTest('cat', 153); // 同样输出 {cat: 153}
  • 先创建空对象再动态赋值:如果需要兼容ES6之前的环境,可以用这种方式:
"use strict";
let functionTest = function(x, y) {
  let result = {};
  result[x] = y;
  return console.log(result);
}
functionTest('cat', 153); // 输出 {cat: 153}

简单来说,静态的对象键名直接写标识符就好,但要把变量的值作为键名,就得用计算属性名或者动态赋值的方式啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:15:54