según este artículo :
Internamente, el código fuente de JavaScript se trata como una secuencia de unidades de código UTF-16.
Y este documento de IBM dice que:
UTF-16 se basa en unidades de código de 16 bits. Por lo tanto, cada carácter puede tener 16 bits (2 bytes) o 32 bits (4 bytes).
Pero probé en la consola de Chrome que las letras en inglés solo ocupan 1 byte, no 2 o 4.
new Blob(['a']).size === 1
Me pregunto por qué ese es el caso. ¿Me estoy perdiendo de algo?
Internamente, el código fuente de JavaScript se trata como una secuencia de unidades de código UTF-16.
Tenga en cuenta que esto se refiere al código fuente, no a los valores de cadena. Se hace referencia a los valores de cadena para que también sean UTF-16 más adelante en el artículo:
Cuando una cadena contiene datos textuales reales, cada elemento se considera una sola unidad de código UTF-16.
La discrepancia aquí está realmente en el constructor Blob. Desde MDN :
Tenga en cuenta que las cadenas aquí están codificadas como UTF-8, a diferencia de las cadenas JavaScript UTF-16 habituales.
UTF tiene un tamaño de carácter variable.
a tiene un tamaño de 1 byte, pero ą por ejemplo tiene 2
console.log('a', new Blob(['a']).size) console.log('ą', new Blob(['ą']).size)