web-dev-qa-db-ja.com

codePointAtとcharCodeAtの違い

JavaScriptのString.prototype.codePointAt()String.prototype.charCodeAt()の違いは何ですか?

'A'.codePointAt(); // 65
'A'.charCodeAt();  // 65
23

Mozilla から:

CharCodeAt()メソッドは、指定されたインデックスのUTF-16コードユニットを表す0〜65535の整数を返します(UTF-16コードユニットは、単一のUTF-16コードユニットで表現可能なコードポイントのUnicodeコードポイントと一致しますが、また、単一のUTF-16コード単位では表現できないコードポイントのサロゲートペアの最初のコード単位でもあります(たとえば、Unicodeコードポイント> 0x10000)。コードポイント値全体が必要な場合は、codePointAt()を使用します。

charCodeAt()はUTF-16、codePointAt()はUnicodeです。

28
ToxicTeacakes

ToxicTeacakesの回答にいくつか追加するために、違いを理解するのに役立つ別の例を次に示します。

"????".charCodeAt(0).toString(16);//d842
"????".charCodeAt(1).toString(16);//dfb7

"????".codePointAt(0);//20bb7
"????".codePointAt(1);//dfb7

console.log("\ud842\udfb7");//????, an example of hexadecimal digits
console.log("\u20bb7\udfb7");//₻7�
console.log("\u{20bb7}");//???? an unicode code point escapes the "\ud842\udfb7"

以下 はjavascript文字列リテラルに関する情報です:

「\ uXXXX」
4桁の16進数XXXXで指定されたUnicode文字。たとえば、\ u00A9は著作権記号のUnicodeシーケンスです。

「\ u {XXXXX}」
ユニコードコードポイント
エスケープ。たとえば、\ u {2F804}は、単純なUnicodeエスケープ\ uD87E\uDC04と同じです。

も参照してください msdn

25
PageYe

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/codePointAt

このURLから、違いを得ることができます。それらの機能はほとんど同じですが、戻り値と不正な引数にいくつかの違いがあります。

0
Allen