String类型是没有固定大小的原始类型?

低头思蚊香 2012-04-07 05:52:01
在《JavaScript高级程序设计》第17页

原话是“String类型的独特之处在于,它是唯一没有固定大小的原始类型。”

String原始类型不是存储在栈中的吗?那不是应该是固定大小的?

谁能给出代码证明一下,String原始类型是可变的
...全文
163 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
低头思蚊香 2012-04-08
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

第二版29页
ECMSScript中的字符串是不可变的,字符串一旦创建,他们的值就不能改变。要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量。
[/Quote]
已经懂了,谢谢帮我查,可惜我看的是第一版所以没有找到这句话。。
Acesidonu 2012-04-08
  • 打赏
  • 举报
回复
第二版29页
ECMSScript中的字符串是不可变的,字符串一旦创建,他们的值就不能改变。要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量。
低头思蚊香 2012-04-08
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
这话的意思是 在语法层面 string可以初始化为任意长度的字符串 这跟存储在堆中或者是栈中没有关系
如果你觉得因为可能造成栈溢出而认为string长度有限制 那存储在堆中也是可能溢出的 毕竟内存是有限的
如果你觉得栈中的类型一定得有长度限制 那也是不对的 c++中任意类的实例都可以存储在栈中 难道c++中对类实例的大小有限制?
[/Quote]
还有堆空间由操作系统管理和分配,是不会溢出的,你说的是内存资源耗尽
低头思蚊香 2012-04-08
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

这话的意思是 在语法层面 string可以初始化为任意长度的字符串 这跟存储在堆中或者是栈中没有关系
如果你觉得因为可能造成栈溢出而认为string长度有限制 那存储在堆中也是可能溢出的 毕竟内存是有限的
如果你觉得栈中的类型一定得有长度限制 那也是不对的 c++中任意类的实例都可以存储在栈中 难道c++中对类实例的大小有限制?
[/Quote]
我理解成运行时长度可变了。。
knightzhuwei 2012-04-08
  • 打赏
  • 举报
回复
这话的意思是 在语法层面 string可以初始化为任意长度的字符串 这跟存储在堆中或者是栈中没有关系
如果你觉得因为可能造成栈溢出而认为string长度有限制 那存储在堆中也是可能溢出的 毕竟内存是有限的
如果你觉得栈中的类型一定得有长度限制 那也是不对的 c++中任意类的实例都可以存储在栈中 难道c++中对类实例的大小有限制?
低头思蚊香 2012-04-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

引用 3 楼 的回复:

1楼和2楼正好说的正好是反的,要我信谁的。。

我怎么没看出来是反的啊
[/Quote]
1楼说的连对象和对象的引用都没搞清楚
knightzhuwei 2012-04-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

1楼和2楼正好说的正好是反的,要我信谁的。。
[/Quote]
我怎么没看出来是反的啊
低头思蚊香 2012-04-08
  • 打赏
  • 举报
回复
1楼和2楼正好说的正好是反的,要我信谁的。。
Acesidonu 2012-04-07
  • 打赏
  • 举报
回复
string不可变,不同的字符串通过不同的指针引用来使用。
wzhiyuan 2012-04-07
  • 打赏
  • 举报
回复
string本质上应该存的是指针,所以没有分配大小,内容可任意长

87,914

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧