js中的string是只读的!!!

今天写排序的时候没看到string有sort方法
然后就打算自己实现快排,
想当然地觉得string能迭代就把它当作了array,跟其它语言搞混了...
比如str = "bca",str[0] = str[1],结果肯定不会变的 =_=,str依然是"bca"
所以我的排序爆栈了...被自己蠢到了...

此时突然回忆起一句话,ECMAScript规定string不可变,
也就是说我们平时看到的字符串拼接、字符串修改,都是踢走正主后的篡位小人
比如str = "Java", str += "Script"

  • 首先创建能容纳10个字符的字符串
  • 然后将"Java"和"Script"填充进去,变成"JavaScript"
  • 最后销毁"Java"和"Script"这两个字符串

最后又想起一句话,基本数据类型保存值 → 内容在栈中,引用数据类型保存地址 → 内容在堆中

至于为什么能迭代,浏览器爸爸实现的迭代器吧(T T), 所以字符串是只读的, 你可以用迭代器去读每一位,但你就是不可以改它

不经意间就忘掉了基础知识...

posted on 2019-12-12 11:53  亭早  阅读(422)  评论(0)    收藏  举报