ES6多行字符串是否有最大长度?

时间:2017-05-13 17:15:10

标签: javascript string

JavaScript中字符串的可能字符长度是否有上限,特别是ES6 +?

你能这样做吗?

const wowThisIsALongString = `${collectedWorksOfWilliamShakespeare}`

[我会手工写出收集的作品,但感觉很懒散。]

如果我理解正确(并且可能性不大),JavaScript字符串只是一种特殊的JavaScript Object,那么技术上没有限制吗?

但也许在实践中情况有所不同?

编辑/更新: 正如人们所说,字符串基元不是对象。在我检查ECMAScript 2015规范之前,我从未想过它。

  

4.3.17字符串值

     

原始值,它是零或更多的有限有序序列   16位无符号整数

     

注意String值是String类型的成员。每个整数值   在序列中通常表示单个16位UTF-16单位   文本。但是,ECMAScript没有任何限制或   对值的要求除了它们必须是16位无符号   整数。

     

4.3.18字符串类型

     

所有可能的字符串值的集合

     

4.3.19字符串对象

     

Object类型的成员,它是标准内置的实例   字符串构造函数

     

注意使用String中的String构造函数创建String对象   new表达式,提供String值作为参数。所结果的   object有一个内部插槽,其值为String值。一个字符串   可以通过调用String将对象强制转换为String值   构造函数作为函数(21.1.1.1)。

那么,当他们写这篇文章时,String对象是包含字符串的对象,还是......其他东西的含义?

另一个更新: 我认为Ryan已经在下面回答了这个问题。

1 个答案:

答案 0 :(得分:2)

Section 6.1.4中指定长度为2 53 - 1:

  

String类型是零个或多个16位无符号整数值(“元素”)的所有有序序列的集合,最大长度为2 53 -1个元素。

这是具有明确表示形式的最高整数:

> 2**53 === 2**53 - 1
false

> 2**53 === 2**53 + 1
true

单个引擎可以有更小的限制。例如,V8将其字符串限制为2 28 - 14个字符。

旁注:原始字符串不是对象,但这与长度限制没有多大关系。 JavaScript有一个“原始包装”错误,允许字符串,数字和布尔值被对象包裹,这就是你链接的部分引用的内容,但是没有理由使用它。