JavaScript函数报错Uncaught ReferenceError:赋值左侧无效排查
问题排查与解决:Uncaught ReferenceError: Invalid left-hand side in assignment
这个错误的根源非常直接,我帮你拆解一下问题和修复方案:
1. 导致错误的核心问题
在你的第一个if条件判断里,你误用了赋值运算符=,而不是比较运算符===/==:
// 错误写法:试图在条件里给sumCumplimiento赋值0.00 if (parseFloat(sumCumplimiento) = 0.00) {
JavaScript不允许在条件判断的左侧进行赋值操作(这会被认为是无效的左值),所以抛出了Invalid left-hand side in assignment错误。你需要把它改成比较操作,推荐使用严格相等===来避免类型隐式转换的问题:
// 正确写法:判断sumCumplimiento解析后是否等于0.00 if (parseFloat(sumCumplimiento) === 0.00) {
2. 额外的笔误问题
我还发现一个拼写错误:"panel-defaluft"应该是"panel-default",这个笔误会导致你的样式无法正确生效,需要修正。
3. 可选的代码优化
为了提升代码可读性和性能,你可以把sumCumplimiento的解析操作提前到函数开头,避免重复调用parseFloat:
修正后的完整代码
function obtenerValorPorColorSemaforo(sumCumplimiento, valueColorVerde, valueColorAmarillo) { var result = null; // 提前解析所有需要用到的数值,避免重复计算 var numCumplimiento = parseFloat(sumCumplimiento); var porColorVerde = parseFloat(valueColorVerde); var porColorAmarillo = parseFloat(valueColorAmarillo); if (numCumplimiento === 0.00) { // Color gris - 修正了类名拼写 result = "panel-default"; } else if (numCumplimiento >= porColorVerde) { // Color VERDE result = "panel-success"; } else if (numCumplimiento < porColorVerde && numCumplimiento >= porColorAmarillo) { // Color AMARILLO result = "panel-warning"; } else { // Color ROJO result = "panel-danger"; } return result; }
这样修改后,你的函数就能正常运行,不会再抛出那个ReferenceError,同时样式类名也能正确匹配了。
内容的提问来源于stack exchange,提问作者Romina Ciccarello
相关产品推荐
相关产品推荐

