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

JavaScript动态属性名传参报错,如何将fns[test]转为months?

解决动态属性名传入方法的语法错误问题

错误原因

你遇到的语法错误是因为旧版JavaScript不支持直接在对象字面量中使用表达式作为属性名。虽然ES6引入了计算属性名语法,但如果你的代码环境(或ESLint/TypeScript配置)未启用ES6支持,就会触发这类报错。

解决方案

方案1:使用ES6计算属性名(推荐)

直接用方括号包裹表达式作为属性名,这是ES6标准语法,现代环境默认支持:

// 正确写法:用方括号包裹计算表达式
durationFns.toString({ [fns[test]]: value })

这里的[fns[test]]会先计算出"months",再作为对象的属性名,和你直接写{ months: value }效果完全一致。

方案2:先构建对象再传入(兼容旧环境)

如果你的环境不支持ES6,可以先创建空对象,动态添加属性后再传入方法:

const params = {};
// 动态添加属性
params[fns[test]] = value;
// 传入方法
durationFns.toString(params);

配置注意事项

  • 若ESLint报错:检查.eslintrc.js,确保parserOptions.ecmaVersion设为6或更高;
  • 若TypeScript报错:检查tsconfig.json,确保target字段设为ES6或更高版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 09:10:34