JavaScript中字符串的最大长度是多少?

6
我认为这应该是一个简单的Google搜索,但是没有找到任何结果。
假设我创建了一个循环,不断地将一个字符附加到变量中。
程序会在什么时候崩溃?
我希望有人在<6秒钟内就会评论“为什么不尝试一下并找出答案?”,但是尝试并不能告诉我问题的答案。这是否取决于具体实现?是否定义在任何地方?在ECMAScript规范中似乎找不到这个信息。
除了可用内存外,是否还存在其他已知限制?当字符串保存着Mbs或Gbs的文本时,性能是否会下降?
记录一下,我确实尝试了运行那个循环……但它只是让我的浏览器崩溃了:(也许如果我做一些调整并再次尝试,会有不同的结果。

1
你有多少内存? :) 字符串操作是由它们的实现定义的。例如,length 是 O(1),因此它变大没有任何影响(可能会有一些很小的前期分配成本,但当然,填充那么多内存也有成本)。 - Vaughan Hilts
我认为驳回这个问题相当不公平。至少它在智力上是有趣的。你是想关闭这个问题,还是那4040954590个作业问题?得了吧。 - Vaughan Hilts
作为回应_"It doesn't seem to be in the ECMAScript spec"_,在ECMAScript 2015-6.1.4字符串类型中有一段关于此的描述。 - Shidersz
@VaughanHilts - 你说得对,这确实比做作业问题有趣得多。编写代码是关于生活在限制内的。在这里做出贡献也是如此 - 我同意这个问题没有任何问题。 - Randy Casburn
1个回答

6
ECMAScript 2016(第7版)规定了最大长度为2^53 - 1个元素。此前没有指定最大长度。在Firefox浏览器中,字符串的最大长度为2**30 - 2约1GB)。在Firefox 65之前的版本中,最大长度是2**28- 1(约256MB)。链接

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接