JavaScript-ES6-String

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""