今天写排序的时候没看到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), 所以字符串是只读的, 你可以用迭代器去读每一位,但你就是不可以改它
不经意间就忘掉了基础知识...
原文地址:https://www.cnblogs.com/xw172854/p/12028354.html
时间: 2024-10-09 02:29:46