mirror of
https://github.com/ruanyf/es6tutorial.git
synced 2025-05-24 10:22:23 +00:00
docs(string): edit string
This commit is contained in:
parent
2361c73019
commit
366c4ddfb5
@ -708,14 +708,14 @@ var es6 = {
|
||||
standard: "ECMA-262"
|
||||
};
|
||||
|
||||
for (e in es6) {
|
||||
for (let e in es6) {
|
||||
console.log(e);
|
||||
}
|
||||
// edition
|
||||
// committee
|
||||
// standard
|
||||
|
||||
for (e of es6) {
|
||||
for (let e of es6) {
|
||||
console.log(e);
|
||||
}
|
||||
// TypeError: es6 is not iterable
|
||||
|
@ -21,9 +21,9 @@ JavaScript允许采用`\uxxxx`形式表示一个字符,其中“xxxx”表示
|
||||
// " 7"
|
||||
```
|
||||
|
||||
上面代码表示,如果直接在“\u”后面跟上超过`0xFFFF`的数值(比如`\u20BB7`),JavaScript会理解成“\u20BB+7”。由于`\u20BB`是一个不可打印字符,所以只会显示一个空格,后面跟着一个7。
|
||||
上面代码表示,如果直接在`\u`后面跟上超过`0xFFFF`的数值(比如`\u20BB7`),JavaScript会理解成`\u20BB+7`。由于`\u20BB`是一个不可打印字符,所以只会显示一个空格,后面跟着一个`7`。
|
||||
|
||||
ES6对这一点做出了改进,只要将码点放入大括号,就能正确解读该字符。
|
||||
ES6 对这一点做出了改进,只要将码点放入大括号,就能正确解读该字符。
|
||||
|
||||
```javascript
|
||||
"\u{20BB7}"
|
||||
@ -53,7 +53,7 @@ hell\u{6F} // 123
|
||||
|
||||
## codePointAt()
|
||||
|
||||
JavaScript内部,字符以UTF-16的格式储存,每个字符固定为2个字节。对于那些需要4个字节储存的字符(Unicode码点大于0xFFFF的字符),JavaScript会认为它们是两个字符。
|
||||
JavaScript内部,字符以UTF-16的格式储存,每个字符固定为`2`个字节。对于那些需要`4`个字节储存的字符(Unicode码点大于`0xFFFF`的字符),JavaScript会认为它们是两个字符。
|
||||
|
||||
```javascript
|
||||
var s = "𠮷";
|
||||
@ -65,7 +65,7 @@ s.charCodeAt(0) // 55362
|
||||
s.charCodeAt(1) // 57271
|
||||
```
|
||||
|
||||
上面代码中,汉字“𠮷”的码点是`0x20BB7`,UTF-16编码为`0xD842 0xDFB7`(十进制为55362 57271),需要4个字节储存。对于这种4个字节的字符,JavaScript不能正确处理,字符串长度会误判为2,而且`charAt`方法无法读取整个字符,`charCodeAt`方法只能分别返回前两个字节和后两个字节的值。
|
||||
上面代码中,汉字“𠮷”(注意,这个字不是”吉祥“的”吉“)的码点是`0x20BB7`,UTF-16编码为`0xD842 0xDFB7`(十进制为`55362 57271`),需要`4`个字节储存。对于这种`4`个字节的字符,JavaScript不能正确处理,字符串长度会误判为`2`,而且`charAt`方法无法读取整个字符,`charCodeAt`方法只能分别返回前两个字节和后两个字节的值。
|
||||
|
||||
ES6提供了`codePointAt`方法,能够正确处理4个字节储存的字符,返回一个字符的码点。
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user