ES6学习笔记——字符串的扩展

ES6学习笔记——字符串的扩展

字符的unicode表示法

1
2
3
4
5
6
// 单字节表示,只能表示\u000-\uFFFF之间的字符
'\u0061' // 'a'

// 双字节表示
'\uD842\uDFB7'
'𠮷'

字符串的遍历器接口

es6为字符串添加了遍历器接口,所以可以使用 for...of 遍历字符串。

1
2
3
for (let ch of 'asdfgh') {
console.log(ch);
}

for...of 可以遍历unicode的字符串, for 不可以。

1
2
3
4
5
6
7
8
9
10
11
12
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()的扩展

es2019对于 JSON.stringify() 的心行为是保留unicode供开发者自己决定。

1
2
JSON.stringify('\u{D834}') // ""\\uD834""
JSON.stringify('\uDF06\uD834') // ""\\udf06\\ud834""

模板字符串

jQuery插入html:

1
2
3
4
5
6
$('#result').append(
'There are <b>' + basket.count + '</b> ' +
'items in your basket, ' +
'<em>' + basket.onSale +
'</em> are on sale!'
);

es6模板字符串插入html:使用反引号包裹html字符串,使用 ${var_name} 来引用变量,可以作为普通字符串使用,直接回车多行。

1
2
3
4
5
$('#result').append(`
There are <b>${basket.count}</b> items
in your basket, <em>${basket.onSale}</em>
are on sale!
`);

括号内部可以是任意js表达式包括调用函数。大括号中最后都会转化为字符串( toString() )。

模板字符串可以嵌套。

模板可以写成函数,需要的时候调用这个函数。

评论