字符串转驼峰函数开发报错: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
相关产品推荐
相关产品推荐

