JS 字符串底层原理

今天做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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值