【发布时间】:2017-10-12 20:17:22
【问题描述】:
JavaScript 中字符串的可能字符长度是否有上限,尤其是 ES6+?
你能做到吗?
const wowThisIsALongString = `${collectedWorksOfWilliamShakespeare}`
[我会手写收集的作品,但我觉得很懒。]
如果我理解正确(很可能我没有理解),JavaScript 字符串只是一种特殊的 JavaScript Object,所以技术上没有限制?
但实际情况可能有所不同?
编辑/更新: 正如人们所指出的,字符串原语不是对象。在我检查了 ECMAScript 2015 规范之前,我从来没有这样想过。
4.3.17 字符串值
原始值是零个或多个的有限有序序列 16位无符号整数
注意 String 值是 String 类型的成员。每个整数值 序列中通常表示一个 UTF-16 的 16 位单元 文本。但是,ECMAScript 没有设置任何限制或 对值的要求,除了它们必须是 16 位无符号 整数。
4.3.18 字符串类型
所有可能的字符串值的集合
4.3.19 字符串对象
作为标准内置实例的 Object 类型的成员 字符串构造函数
注意 String 对象是通过使用 String 构造函数创建的 新表达式,提供一个字符串值作为参数。所结果的 对象有一个内部槽,其值为字符串值。一个字符串 可以通过调用 String 将对象强制为 String 值 构造函数作为函数 (21.1.1.1)。
那么,当他们这么写的时候,String 对象是包含字符串的对象,还是……其他的东西?
另一个更新:我认为 Ryan 在下面回答了这个问题。
【问题讨论】:
-
字符串是 JavaScript 中的原始类型,它不是对象。
String在后台使用,但字符串文字不是对象。 -
这取决于实现。 See
-
为什么重新打开。副本有效。
-
不要重新打开,而是添加其他重复的问题,例如:stackoverflow.com/questions/34957890/…。很明显,这个问题之前已经以不同的方式被问过好几次了。
-
关于 String 与 string :string 只是一个 char[],但是为了能够调用字符串上的方法,它们是 被 String 对象包裹: "hi".toString() ...
标签: javascript string