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

字符串转驼峰函数开发报错:Invalid left-hand side in assignment expression

解决「Invalid left-hand side in assignment expression」错误的驼峰命名转换方案

嘿,我明白你现在卡在哪了——这个错误其实挺常见的,尤其是刚接触字符串操作的时候😉

错误原因拆解

「Invalid left-hand side in assignment expression」翻译成大白话就是:你试图给一个不能被赋值的东西赋值。在你的驼峰转换场景里,90%的概率是你直接尝试修改字符串的单个字符了,比如写了类似这样的代码:

// 错误示例:直接修改字符串索引位置
str[i] = str[i].toUpperCase();

因为JavaScript里的字符串是不可变类型——你可以读取字符串的某个位置字符,但绝对不能直接通过索引去修改它,所以这行代码的左边str[i]是只读的,自然会抛出这个错误。

正确的实现思路

解决这个问题的核心是先把字符串转换成可修改的数组,修改完数组元素后再转回字符串。这里给你一个完整的示例实现,对应你的需求:

function toCamelCase(str) {
  // 把字符串转成数组,方便修改
  const strArray = str.split('');
  
  for (let i = 0; i < strArray.length; i++) {
    // 遇到连字符或下划线
    if (strArray[i] === '-' || strArray[i] === '_') {
      // 把下一个字符转大写(要确保下一个字符存在)
      if (i + 1 < strArray.length) {
        strArray[i + 1] = strArray[i + 1].toUpperCase();
      }
      // 删除当前的连字符/下划线
      strArray.splice(i, 1);
      // 因为删除了元素,索引要回退一位,避免跳过下一个字符
      i--;
    }
  }
  
  // 把数组转回字符串返回
  return strArray.join('');
}

额外提醒

如果你不是因为字符串不可变的问题,那可以检查下赋值语句的左边是不是一个合法的可赋值变量:

  • 是不是写反了赋值顺序(比如str[i].toUpperCase() = 'X')
  • 是不是把函数调用的结果放在了等号左边(比如someFunction() = 'X')

这些情况都会触发同样的错误,不过结合你的场景,字符串不可变应该是最可能的原因~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:13:01