字符的 Unicode 表示法
JavaScript 共有 6 种方法可以表示一个字符。
'\z' === 'z' // true
'\172' === 'z' // true
'\x7A' === 'z' // true
'\u007A' === 'z' // true
'\u{7A}' === 'z' // true
字符串可以被for…of循环遍历
这个遍历器最大的优点是可以识别大于0xFFFF的码点,传统的for循环无法识别这样的码点。
换行分隔符和段分隔符
- 字符串里面不能直接包含反斜杠,一定要转义写成\或者\u005c。
- json可以直接输出\,但是这样服务器输出的 JSON 被JSON.parse解析,就有可能直接报错。
- 模板字符串现在就允许直接输入这两个字符。
模板字符串
- 用反引号`包住,中间可以用${}直接写变量名,而且可以换行,所有的空格和缩进都会被保留在输出之中
- 如果在模板字符串中需要使用反引号,则前面要用反斜杠转义。
- 可以使用trim方法消除反引号之后和之前的换行,比如
- 标签前面和后面都有一个换行,可以通过trim消除
$('#list').html(`
<ul>
<li>first</li>
<li>second</li>
</ul>
`.trim());
- 大括号内部可以放入任意的 JavaScript 表达式,可以进行运算,以及引用对象属性。
- 模板字符串之中还能调用函数。
-如果大括号中的值不是字符串,将按照一般的规则转为字符串 - 模板字符串还能嵌套
标签模板
- 标签模板其实不是模板,而是函数调用的一种特殊形式。“标签”指的就是函数,紧跟在后面的模板字符串就是它的参数。
let a = 5;
let b = 10;
tag`Hello ${ a + b } world ${ a * b }`;
// 等同于
tag(['Hello ', ' world ', ''], 15, 50);
非变量部分组成数组作为第一个参数,变量依次作为之后的参数
- “标签模板”的一个重要应用,就是过滤 HTML 字符串,防止用户输入恶意内容。
- 标签模板的另一个应用,就是多语言转换(国际化处理),把里面非变量的部分组成数组进行翻译,然后再和变量组合在一起返回