我在内存中将一个非常大(>1MB)的位掩码作为字符串存储,并且对 JS 如何在内部存储字符串感到好奇。我有一种感觉,基于以下事实
String.fromCharCode( 65535 ).charCodeAt( 0 ) === 65535
,所有字符串都是unicode,但我不确定。基本上,我试图找出在内存使用方面,对 16 位字符的位掩码是否比 8 位字符更有效?
我在内存中将一个非常大(>1MB)的位掩码作为字符串存储,并且对 JS 如何在内部存储字符串感到好奇。我有一种感觉,基于以下事实
String.fromCharCode( 65535 ).charCodeAt( 0 ) === 65535
,所有字符串都是unicode,但我不确定。基本上,我试图找出在内存使用方面,对 16 位字符的位掩码是否比 8 位字符更有效?
看一下这个:
https://developer.mozilla.org/en-US/docs/Mozilla_internal_string_guide#IDL_String_types
我相信它非常依赖于浏览器,但 Mozilla 文档揭示了他们如何在内部为 JS 字符串执行此操作。
简短的回答是他们使用 UTF-16
看看这个讨论。
JavaScript 字符串 - UTF-16 与 UCS-2?
简而言之,仅仅因为某些 Javascript 引擎使用 16 位编码并不能使其成为 UTF16。边缘情况代理对在两者之间的处理方式大不相同。