String.fromCharCode()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Phương thức static String.fromCharCode() trả về một string được tạo từ chuỗi đơn vị code UTF-16 được chỉ định.
Try it
console.log(String.fromCharCode(189, 43, 190, 61));
// Expected output: "½+¾="
Cú pháp
String.fromCharCode()
String.fromCharCode(num1)
String.fromCharCode(num1, num2)
String.fromCharCode(num1, num2, /* …, */ numN)
Tham số
num1, …,numN-
Một số từ
0đến65535(0xFFFF) biểu diễn một đơn vị code UTF-16. Các số lớn hơn0xFFFFbị cắt bớt đến 16 bit cuối. Không có kiểm tra tính hợp lệ.
Giá trị trả về
Một string có độ dài N bao gồm N đơn vị code UTF-16 được chỉ định.
Mô tả
Vì fromCharCode() là một phương thức static của String, bạn luôn sử dụng nó là String.fromCharCode(), thay vì là một phương thức của một giá trị String bạn đã tạo.
Các code point Unicode có phạm vi từ 0 đến 1114111 (0x10FFFF). charCodeAt() luôn trả về một giá trị nhỏ hơn 65536, bởi vì các code point cao hơn được biểu diễn bởi một cặp pseudo-character surrogate 16-bit. Do đó, để tạo ra một ký tự đầy đủ có giá trị lớn hơn 65535, cần cung cấp hai đơn vị code (như thể xử lý một string có hai ký tự). Để biết thông tin về Unicode, xem UTF-16 characters, Unicode code points, and grapheme clusters.
Vì fromCharCode() chỉ hoạt động với các giá trị 16-bit (giống như chuỗi thoát \u), một cặp surrogate là cần thiết để trả về một ký tự bổ sung. Ví dụ, cả String.fromCharCode(0xd83c, 0xdf03) và "\ud83c\udf03" đều trả về code point U+1F303 "Night with Stars". Mặc dù có mối quan hệ toán học giữa giá trị code point bổ sung (ví dụ: 0x1f303) và cả hai giá trị surrogate biểu diễn nó (ví dụ: 0xd83c và 0xdf03), nhưng nó yêu cầu một bước thêm để tính toán hoặc tra cứu các giá trị surrogate pair mỗi khi một code point bổ sung được sử dụng. Vì lý do này, việc sử dụng String.fromCodePoint() thuận tiện hơn, cho phép trả về các ký tự bổ sung dựa trên giá trị code point thực tế của chúng. Ví dụ, String.fromCodePoint(0x1f303) trả về code point U+1F303 "Night with Stars".
Ví dụ
>Sử dụng fromCharCode()
Các ký tự BMP, trong UTF-16, sử dụng một đơn vị code duy nhất:
String.fromCharCode(65, 66, 67); // returns "ABC"
String.fromCharCode(0x2014); // returns "—"
String.fromCharCode(0x12014); // also returns "—"; the digit 1 is truncated and ignored
String.fromCharCode(8212); // also returns "—"; 8212 is the decimal form of 0x2014
Các ký tự bổ sung, trong UTF-16, yêu cầu hai đơn vị code (tức là một surrogate pair):
String.fromCharCode(0xd83c, 0xdf03); // Code Point U+1F303 "Night with
String.fromCharCode(55356, 57091); // Stars" === "\uD83C\uDF03"
String.fromCharCode(0xd834, 0xdf06, 0x61, 0xd834, 0xdf07); // "\uD834\uDF06a\uD834\uDF07"
Đặc tả
| Thông số kỹ thuật |
|---|
| ECMAScript® 2027 Language Specification> # sec-string.fromcharcode> |