String.prototype.charCodeAt()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2015ë 7ì.
String ê°ì charCodeAt() ë©ìëë 주ì´ì§ ì¸ë±ì¤ì UTF-16 ì½ë ë¨ì를 íííë 0ê³¼ 65535 ì¬ì´ì ì ì를 ë°íí©ëë¤.
charCodeAt()ì íì 문ìì´ì UTF-16 ì½ë ë¨ìì ìíì¤ë¡ ìì¸íë¯ë¡ ë¡ ìë¡ê²ì´í¸(lone surrogates)를 ë°íí ì ììµëë¤. 주ì´ì§ ì¸ë±ì¤ìì ì ì²´ ì ëì½ë ì½ë í¬ì¸í¸ë¥¼ ê°ì ¸ì¤ë ¤ë©´ String.prototype.codePointAt()를 ì¬ì©í©ëë¤.
ìëí´ ë³´ê¸°
const sentence = "The quick brown fox jumps over the lazy dog.";
const index = 4;
console.log(
`Character code ${sentence.charCodeAt(index)} is equal to ${sentence.charAt(
index,
)}`,
);
// Expected output: "Character code 113 is equal to q"
구문
charCodeAt(index)
매ê°ë³ì
index-
ë°íí 문ìì 0 ê¸°ë° ì¸ë±ì¤. ì ìë¡ ë³íëë ìì¹ì ë°ë¼
undefinedì 0ì¼ë¡ ë³íë©ëë¤.
ë°í ê°
ëª
ìë indexì ìë 문ìì UTF-16 ì½ë ë¨ì ê°ë¥¼ íííë 0 ë¶í° 65535ì¬ì´ì ì ìì
ëë¤. ë§ì½ indexê° 0ë¶í° str.length - 1 ì¬ì´ì ë²ì를 ë²ì´ëë¤ë©´ charCodeAt()ì NaNì ë°íí©ëë¤.
ì¤ëª
문ìì´ì 문ìë ì¼ìª½ìì ì¤ë¥¸ìª½ì¼ë¡ ìì¸ë©ëë¤. 첫 ë²ì§¸ 문ìì ì¸ë±ì¤ë 0ì´ê³ strì´ë¼ ë¶ë¦¬ë 문ìì´ì ë§ì§ë§ 문ìì´ì ì¸ë±ì¤ë str.length - 1ì
ëë¤.
ì ëì½ë ì½ë í¬ì¸í¸ ë²ìë 0ìì 1114111(0x10FFFF)ê¹ì§ì
ëë¤. ë ëì ì½ë í¬ì¸í¸ë 16ë¹í¸ ìì¬ ë¬¸ìì ìë¡ê²ì´í¸ë¡ ííë기 ë문ì charCodeAt()ì íì 65536ë³´ë¤ ìì ê°ì ë°íí©ëë¤. ë°ë¼ì 65535ë³´ë¤ í° ê°ì ê°ì§ ì ì²´ 문ì를 ì»ì¼ë ¤ë©´ charCodeAt(i)ë¿ë§ ìëë¼ charCodeAt(i + 1)ë ê²ìíê±°ë(ë 문ìë¡ ë 문ìì´ì ì¡°ìíë ê²ì²ë¼) codePointAt(i)를 ëì ì¬ì©í´ì¼ í©ëë¤. ì ëì½ëì ëí´ ì 보를 ë ìê³ ì¶ì¼ìë©´ UTF-16 문ì, ì ëì½ë ì½ë í¬ì¸í¸ ê·¸ë¦¬ê³ ê·¸ëí í´ë¬ì¤í°ë¥¼ ì°¸ê³ íì기 ë°ëëë¤.
ìì
>charCodeAt() ì¬ì©í기
ë¤ì ìì ë ì ëì½ë ê° Aì í´ë¹íë 65를 ë°íí©ëë¤.
"ABC".charCodeAt(0); // 65 ë°í
charCodeAt()ì ì í¨í ì ëì½ë 문ìê° ìë ë¡ ìë¡ê²ì´í¸(lone surrogates)를 ë°íí ì ììµëë¤.
const str = "ð ®·ð ®¾";
console.log(str.charCodeAt(0)); // ì í¨í ì ëì½ë 문ìê° ìë 55362, í¹ì d842
console.log(str.charCodeAt(1)); // ì í¨í ì ëì½ë 문ìê° ìë 57271, í¹ì dfb7
주ì´ì§ ì¸ë±ì¤ì ì¨ì í ì ëì½ë ì½ë í¬ì¸í¸ë¥¼ ì»ê¸° ìí´ìë String.prototype.codePointAt()를 ì¬ì©íì¸ì.
const str = "ð ®·ð ®¾";
console.log(str.codePointAt(0)); // 134071
ì°¸ê³ :
charCodeAt()ì ì¬ì©íì¬ codePointAt()ì ë¤ì 구ííì§ ë§ì¸ì. UTF-16 ìë¡ê²ì´í¸ìì ì ëì½ë ì½ë í¬ì¸í¸ë¡ì ë³íì ë³µì¡íë©° codePointAt()ì 문ìì´ì ë´ë¶ ííì ì§ì ì¬ì©íë¯ë¡ ì±ë¥ì´ ë ì°ìí ì ììµëë¤. íìí ê²½ì° codePointAt()ì ëí í´ë¦¬íì ì¤ì¹íì기 ë°ëëë¤.
ìëë ì ëì½ë FAQìì ë°ì·í UTF-16 ì½ë ë¨ì ìì ì ëì½ë ì½ë í¬ì¸í¸ë¡ ë³ííë ê°ë¥í ìê³ ë¦¬ì¦ì ëë¤.
// constants
const LEAD_OFFSET = 0xd800 - (0x10000 >> 10);
const SURROGATE_OFFSET = 0x10000 - (0xd800 << 10) - 0xdc00;
function utf16ToUnicode(lead, trail) {
return (lead << 10) + trail + SURROGATE_OFFSET;
}
function unicodeToUTF16(codePoint) {
const lead = LEAD_OFFSET + (codePoint >> 10);
const trail = 0xdc00 + (codePoint & 0x3ff);
return [lead, trail];
}
const str = "ð ®·";
console.log(utf16ToUnicode(str.charCodeAt(0), str.charCodeAt(1))); // 134071
console.log(str.codePointAt(0)); // 134071
ëª ì¸ì
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-string.prototype.charcodeat> |