I am trying to understand memory used by Strings & Arrays. As per this helpful question: How many bytes in a JavaScript string?
Blob is a great way of checking byte size of Strings:
new Blob(['a']).size -> 1 byte
But Strings are encoded UTF-16 in JavaScript which uses minimum of 2 bytes. How does Blob return 1?
>Solution :
Blob uses UTF-8 to represent strings.
The minimum byte size for UTF-8 is 1 and character 'a' can be represented in UTF-8 using a single byte. A two-byte UTF-8 character ('Ђ' for example) returns 2, and something even longer like complex emoji ('😃') returns 4.