今天做leet时候写了段代码
let str = 'abcd'
如果想要知道str的第N位,只需要
console.log(str[0])
但是想要修改第N位的时候,下面的代码就出错了
str[0] = 'K'
这个为什么不行呢,查了阮一峰的JS教程
字符串可以被视为字符数组,因此可以使用数组的方括号运算符,用来返回某个位置的字符(位置编号从0开始)。如果方括号中的数字超过字符串的长度,或者方括号中根本不是数字,则返回undefined。但是,字符串与数组的相似性仅此而已。实际上,无法改变字符串之中的单个字符。
这里有了为什么不能改变字符串之中的单个字符的疑问,先按下不表。
回到代码我应该怎么写呢
str.substring(0,i) + 'K' + str.substring(Number(i)+1)
再回到疑问,为什么不能修改字符串的值,后来查到引擎就是这么设计的,包括JAVA等其他语言。
那新的疑问就来了为什么要这么设计,这部分内容比较多,主要在效率优化和安全性,
https://blog.csdn.net/weixin_43139183/article/details/121119389