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

JS/TS中如何输出数组元素的变量表达式而非计算后的值?

解决方法

JavaScript/TypeScript 在执行代码时会直接对表达式求值,所以数组中存储的是计算后的结果,无法直接从已求值的数组元素反推出原始表达式。要保留原始表达式,需要在定义时同时存储表达式的字符串形式和求值结果,或者单独维护表达式字符串再按需求值。

方案1:单独维护表达式字符串,按需求值

把每个表达式以字符串形式存储,需要计算结果时通过 eval 或 new Function 求值:

let prefix = 'Week';
// 存储原始表达式字符串
const exprList = ["prefix + '2nd'", "prefix + 'third'"];
// 生成计算后的结果数组
const resultArray = exprList.map(expr => eval(expr));

// 输出原始表达式
exprList.forEach(expr => console.log(expr));
// 输出计算后的值(可选)
resultArray.forEach(val => console.log(val));

方案2:用对象同时存储表达式和结果

如果需要同时保留表达式和对应的值,可以用对象数组的形式:

let prefix = 'Week';
const items = [
  { expr: "prefix + '2nd'", value: prefix + '2nd' },
  { expr: "prefix + 'third'", value: prefix + 'third' }
];

// 输出原始表达式
items.forEach(item => console.log(item.expr));
// 输出计算后的值(可选)
items.forEach(item => console.log(item.value));

注意事项

  • 使用 eval 时要注意安全风险,确保表达式来源可信,避免注入恶意代码。
  • 如果是 TypeScript 项目,eval 会被标记为不安全操作,也可以用 new Function 替代,比如:new Function('prefix', return ${expr})(prefix)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 04:54:55