fromCharCode和fromCodePoint区别

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)

你可能感兴趣的:(前端,es6,js,fromCodePoint)