String.fromCharCode()方法可以实现把码点转成字符打印,比如String.fromCharCode(0x0061),控制台会输出a,但是fromCharCode只能对不大于0xFFFF
的码点才有效,如果我们要打印一个emoji表情笑脸?,首先我们知道这个笑脸的Unicode编码是1f601,但是很明显超出了FFFF,如果使用fromCharCode并不会输出我们想要的笑脸
String.fromCharCode(0x1f601)
//""
你会发现输出的是一个方框,
String.fromCharCode(0xf601)
//""
你会发现使用fromCharCode输出0x1f601和输出0xf601结果是一样的,这是因为1f601超出了ffff,所以输出结果把1f601中的高位1截断了,实际输出的还是f601。
所以为了解决不能大于0xffff的问题,es6出现了fromCodePoint。
String.fromCodePoint(0x1f601)
//"?"
终于出现了我们想要的结果,fromCodePoint是可以传递多个参数的,在处理过程中会对多个参数进行拼接处理。
String.fromCodePoint(0x1f601,0x1f601,0x1f601)
//"???"
标记几个不能直接使用Unicode的转写的,只能使用转义形式。比如反斜杠 前面要加上转义符号才可以,\u005c
- U+005C:反斜杠(reverse solidus)
- U+000D:回车(carriage return)
- U+2028:行分隔符(line separator)
- U+2029:段分隔符(paragraph separator)
- U+000A:换行符(line feed)