JS每个字符总是使用两个字节来存储字符串吗?

时间:2013-03-06 23:09:26

标签: javascript performance memory-management

我在内存中存储一​​个非常大(> 1MB)的位掩码作为字符串,并且很好奇JS如何在内部存储字符串。基于

的事实,我有这种感觉
String.fromCharCode( 65535 ).charCodeAt( 0 ) === 65535

,所有字符串都是unicode,但我不确定。基本上我试图找出在内存使用方面,对于16位字符而不是8位字符的位掩码是否更有效?

2 个答案:

答案 0 :(得分:1)

检查出来:

https://developer.mozilla.org/en-US/docs/Mozilla_internal_string_guide#IDL_String_types

我认为它非常依赖于浏览器,但是Mozilla文档揭示了它们如何在内部为JS字符串做的。

简短的回答是他们使用UTF-16

http://en.wikipedia.org/wiki/UTF-16

答案 1 :(得分:0)

查看此讨论。

JavaScript strings - UTF-16 vs UCS-2?

简而言之,仅仅因为一些Javascript引擎使用16位编码并不能使其成为UTF16。边缘情况代理对在两者之间的处理方式不同。