JavaScript-ES6-String
這篇簡介JavaScript-ES6 String。
String
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| ES6 enhance Unicode: "\u0061" // "a"
"\uD842\uDFB7" // "𠮷"
"\u20BB7" // " 7"
"\u{20BB7}" // "𠮷"
"\u{41}\u{42}\u{43}" // "ABC"
let hello = 123; hell\u{6F} // 123
'\u{1F680}' === '\uD83D\uDE80' --> {} 表示法 與 UTF-16 是相等的 // true
有六種表示法可以表示同一個String 'z' === 'z' '\z' === 'z' // true '\172' === 'z' // true '\x7A' === 'z' // true '\u007A' === 'z' // true '\u{7A}' === 'z' // true
|
for loop - String
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| for (let codePoint of 'foo') { console.log(codePoint) } // "f" // "o" // "o" ------------------------------ let text = String.fromCodePoint(0x20BB7);
for (let i = 0; i < text.length; i++) { console.log(text[i]); } // " " // " "
for (let i of text) { console.log(i); } // "𠮷"
|
JSON.stringify()
1 2 3 4 5
| 編碼:UTF-8 JSON.stringify()的問題是可能return 0xD800到0xDFFF之間的編碼。 ES2019改成如果遇到0xD800到0xDFFF或是不存在的一對編碼,會return 跳脫字串。 JSON.stringify('\u{D834}') // ""\\uD834"" JSON.stringify('\uDF06\uD834') // ""\\udf06\\ud834""
|