JavaScript赋值左侧无效语法错误排查(C3组合图表开发)
解决"Uncaught SyntaxError: Invalid left-hand side in assignment"错误
嘿,我一眼就看到你代码里的问题啦,这个语法错误的根源完全出在这一行:
this._resultSettingsJ.data.types.dataSeries + '_count' = _types[_count].value;
为什么会报错?
JavaScript里,赋值操作的左边必须是一个能被赋值的“目标”(比如变量名、对象的属性引用),但你这里左边是一个字符串拼接的表达式——dataSeries + '_count'是计算出来的字符串结果,不是一个合法的赋值目标,所以浏览器直接抛出了语法错误。
另外还有个隐藏坑:你的循环从_count = 1开始,但_types数组是用push添加元素的,数组索引是从0开始的。第一次循环时,你push了第一个元素到_types,但你却去取_types[_count]也就是_types[1],这时候这个位置根本没有值,会拿到undefined,后续访问.value还会触发新的错误。
修正后的代码
我帮你调整了这两处问题,用方括号语法来动态设置对象属性,同时修正了数组索引的问题:
//COMBINATION STARTS HERE------------------------------------------------------------------------------------------------- this._initialize_settings_Combination = function () { if (!this.isCombinationChart()) return; this._resultSettingsJ.data.types = {}; var _types = []; var _series = this.Serieses(); for (var _count = 1; _count < this.seriesCount; _count++) { debugger; const currentChartType = _series(_count).chartType; _types.push(currentChartType); // 用方括号语法动态生成属性名并赋值 this._resultSettingsJ.data.types[`dataSeries_${_count}`] = currentChartType.value; // 如果你想通过_types数组取值,要注意索引是_count-1 // this._resultSettingsJ.data.types[`dataSeries_${_count}`] = _types[_count - 1].value; } }
关键调整说明
- 动态属性赋值:把原来的字符串拼接放到方括号
[]里(我还换成了模板字符串,写起来更简洁),这样JavaScript会把拼接后的字符串当作对象的属性名,就能正常完成赋值了。 - 数组索引修正:因为
_types的索引是从0开始的,而你的循环从1起步,要是想取刚push进去的元素,得用_types[_count - 1],不过直接用currentChartType会更高效,不用再从数组里二次取值。
这样改完之后,语法错误就会消失,还能避免后续可能出现的Cannot read property 'value' of undefined错误。
内容的提问来源于stack exchange,提问作者themoonchild
相关产品推荐
相关产品推荐

