龙空技术网

JS中codePointAt和charCodeAt的区别

JorgeGong 63

前言:

如今各位老铁们对“python 运行js codepointat”可能比较看重,你们都需要知道一些“python 运行js codepointat”的相关资讯。那么小编在网摘上搜集了一些对于“python 运行js codepointat””的相关资讯,希望看官们能喜欢,朋友们一起来学习一下吧!

codePointAt和charCodeAt区别在哪呢?

我们通过代码试一下

'䪟'.charCodeAt(0) // 4a9f '䪟'.codePointAt(0) // 4a9f

我们发现都一样额 我们去看下文档解释

The codePointAt() method returns a non-negative integer that is the Unicode code point value.

The charCodeAt() method returns an integer between 0 and 65535 representing the UTF-16 code unit at the given index

在这里出现了65535 我们去看下65525十六进制ffff

那就是说在unicode中0000-ffff我们可以用charCodeAt 但是超出了就不行

因为我们的’䪟’的十六进制4a4f在ffff之间所以这两个没区别

那我们换一个在Unicode中超出ffff的试下(所谓超出ffff就是要用四个字节表示 因为JS采取的是UTF-16储存 所以一般都是两个字节储存 但是一旦超过ffff后就需要4个字节储存。因为十六进制就变成五位了。对于这种4个字节的字符,JavaScript 不能正确处理 所有ES6有了codePointAt)

''.charCodeAt(0) // 55362  ''.codePointAt(0) // 134071 ''.codePointAt(0).toString(16) // 20bb7

因为’’在unicode中16进制超过了ffff 所以我们用charCodeAt就返回错误答案

这时候只能用codePointAt才能正确返回10进制

这就是为什么更新了codePointAt和fromCodePoint

标签: #python 运行js codepointat