为什么同样是男人,但有的男人'🧔♂️'.length === 5,有的男人'🧔♂'.length === 4呢?
这二者都是JS中的字符串,要理解本质原因,你需要明白JS中字符串的本质,你需要理解 String Unicode UTF8 UTF16 的关系。本文,深入二进制,带你理解它!
各位对这张 ASCII 表一定不陌生:

因为计算机只能存储0和1,如果要让计算机存储字符串,还是需要把字符串转成二进制来存。ASCII就是一直延续至今的一种映射关系:把8位二进制(首位为0)映射到了128个字符上。
但是世界上不止有英语和数字,还有各种各样的语言,计算机也应该能正确的存储、展示它们。
这时候,ASCII的128个字符,就需要被扩充。有诸多扩充方案,但思路都是一致的:把一个语言符号映射到一个编号上。有多少个语言符号,就有多少个编号。
至今,