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

JavaScript中如何用用户输入变量替换函数调用与对象访问的硬编码值

问题原因

你的写法存在两个核心错误:

  • tic.answer是访问tic对象下名为answer的固定属性,不会读取你定义的answer变量的值,自然匹配不到对应属性
  • 你把+'PRICE'的拼接逻辑放在了属性访问外侧,相当于先取不存在的tic.answer(返回undefined)再拼接字符串,结果必然不符合预期

解决方案

JS 中要动态根据变量/表达式的值访问对象属性,需要使用方括号语法,方括号内的表达式会先执行计算,再以计算结果作为属性名取值:

let p = 0;
call.prices(answer + 'PRICE', (err, tic) => { 
  p = tic[answer + 'PRICE']; 
});

优化建议

可以提前定义属性名变量,同时增加属性存在性校验,避免异常情况:

let p = 0;
const priceKey = answer + 'PRICE';
call.prices(priceKey, (err, tic) => { 
  // 先判断返回对象和对应属性是否存在
  if (tic && tic.hasOwnProperty(priceKey)) {
    p = tic[priceKey];
  } else {
    // 可自定义属性不存在时的默认值或错误处理逻辑
    p = 0;
  }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:18:02