JavaScript字符串字符赋值疑问:为何修改字符串首字符未生效?
为什么修改JavaScript字符串的索引值没有生效?
这是个非常典型的JavaScript新手误区,核心原因很简单:JavaScript中的字符串是不可变(immutable)类型。
简单来说,当你创建一个字符串之后,它的内容就固定下来了,你没法直接修改它的任何一个字符。你尝试执行word[0] = 'P'的时候,JavaScript并不会抛出错误,但这个赋值操作实际上完全没有效果——原字符串根本不会被改动。
回到你的代码:
let word = 'Nose'; word[0] = 'P'; console.log(word); // 输出为"Nose" console.log(word[0]); // 输出为"N"
这里let word = 'Nose'创建了一个不可变的字符串实例,后续的word[0] = 'P'只是一个无效操作,JavaScript直接忽略了它,所以原字符串保持原样,自然输出还是原来的结果。
如果想要实现修改字符串某个字符的需求,你需要创建一个新的字符串,这里给你几种常用的方法:
字符串拼接 + 切片:
let word = 'Nose'; word = 'P' + word.slice(1); console.log(word); // 输出 "Pose"转数组修改后再转回字符串:
let word = 'Nose'; const wordArr = word.split(''); wordArr[0] = 'P'; word = wordArr.join(''); console.log(word); // 输出 "Pose"ES6模板字符串:
let word = 'Nose'; word = `P${word.substring(1)}`; console.log(word); // 输出 "Pose"
内容的提问来源于stack exchange,提问作者Prem
相关产品推荐
相关产品推荐

