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

修复代码时持续遇到「Expected an assignment or function call...」错误求助

解决「Expected an assignment or function call and instead saw an expression」错误

这个错误是因为代码检查工具(比如ESLint)禁止将三元运算符作为独立语句使用。三元运算符本质是表达式,它的结果需要被赋值、传递或使用,而你这里用它来执行条件赋值,false分支返回的null没有被处理,属于无意义的表达式语句,触发了规则校验。

另外注意你的代码里有两处小问题:函数名拼写错误constrcutFilterOptions(少了个u),以及常量TIMEFILTERUNIT末尾缺失分号,这些也建议一并修正。

下面是几种可行的修复方案:

方案一:替换为if语句(最直观易读)

const CHARTID = "chart_id";
const FIELDID = "field_id";
const TIMEFILTERVALUE= "time_filter_input";
const TIMEFILTERUNIT = "time_filter_type";
const UNITFILTER = "unit_filter";

const constructFilterOptions = (field_id, chartId, timeFilterType, timeFilterUnit, unit)=> {
  var filterObj = {};
  if (!_.isNil(field_id)) filterObj[FIELDID] = field_id;
  if (!_.isNil(chartId)) filterObj[CHARTID] = chartId;
  if (!_.isNil(timeFilterType)) filterObj[TIMEFILTERUNIT] = timeFilterType;
  if (!_.isNil(timeFilterUnit)) filterObj[TIMEFILTERVALUE] = timeFilterUnit;
  if (!_.isNil(unit)) filterObj[UNITFILTER] = unit;

  return filterObj;
}

方案二:ES6+对象字面量条件属性(更简洁)

利用展开运算符,仅当值非空时向对象添加对应属性:

const CHARTID = "chart_id";
const FIELDID = "field_id";
const TIMEFILTERVALUE= "time_filter_input";
const TIMEFILTERUNIT = "time_filter_type";
const UNITFILTER = "unit_filter";

const constructFilterOptions = (field_id, chartId, timeFilterType, timeFilterUnit, unit)=> {
  return {
    ...(!_.isNil(field_id) && { [FIELDID]: field_id }),
    ...(!_.isNil(chartId) && { [CHARTID]: chartId }),
    ...(!_.isNil(timeFilterType) && { [TIMEFILTERUNIT]: timeFilterType }),
    ...(!_.isNil(timeFilterUnit) && { [TIMEFILTERVALUE]: timeFilterUnit }),
    ...(!_.isNil(unit) && { [UNITFILTER]: unit })
  };
}

方案三:强制使用三元运算符(不推荐,冗余)

如果一定要保留三元写法,需要将表达式结果赋值给变量(虽然完全没必要,但能通过检查):

const CHARTID = "chart_id";
const FIELDID = "field_id";
const TIMEFILTERVALUE= "time_filter_input";
const TIMEFILTERUNIT = "time_filter_type";
const UNITFILTER = "unit_filter";

const constructFilterOptions = (field_id, chartId, timeFilterType, timeFilterUnit, unit)=> {
  var filterObj = {};
  let temp;
  temp = !_.isNil(field_id) ? filterObj[FIELDID] = field_id : null;
  temp = !_.isNil(chartId) ? filterObj[CHARTID] = chartId : null;
  temp = !_.isNil(timeFilterType) ? filterObj[TIMEFILTERUNIT] = timeFilterType : null;
  temp = !_.isNil(timeFilterUnit) ? filterObj[TIMEFILTERVALUE] = timeFilterUnit : null;
  temp = !_.isNil(unit) ? filterObj[UNITFILTER] = unit : null;

  return filterObj;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 17:20:26