ES6第四章
- 1.字符的Unicode表示法
- 加强了表示的方法,原来只能表示\u0000~\uFFFF超过范围的无法表示现在可以勇\u{20BB7}这样子。
- 2.字符串的遍历借口
- 字符串的遍历借口,除了可以正常的遍历,还可以识别大于\uFFFF的字符。但是要用for(…of…)才行。
- 3.允许直接输入字符
- 直接在字符串里面输入这个汉字,也可以输入它的转义形式\u4e2d,两者是等价的。也就是说
'中'==='\u4e2d'
。JavaScript 规定有5个字符,不能在字符串里面直接使用,只能使用转义形式。
U+005C:反斜杠(reverse solidus)
U+000D:回车(carriage return)
U+2028:行分隔符(line separator)
U+2029:段分隔符(paragraph separator)
U+000A:换行符(line feed)
主要是因为json格式允许直接使用字符串所以就可能出问题。ES2019允许JavaScript直接输入U+2028和U+2029。
- 直接在字符串里面输入这个汉字,也可以输入它的转义形式\u4e2d,两者是等价的。也就是说
- 4.JSON.stringify() 的改造
- 现在的stringify()遇到两个码点时返回的时两个码点不像以前多个码点返回的还是单个码点。
- 5.模板字符串
- 模板字符串(template string)是增强版的字符串,用反引号(`)标识。它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。
//单行字符串 `In JavaScript '\n' is a line-feed.` // 多行字符串 `In JavaScript this is not legal.` console.log(`string text line 1 string text line 2`); // 字符串中嵌入变量 let name = "Bob", time = "today"; `Hello ${name}, how are you ${time}?`
在字符串里面使用“ ‘ ”要用 " ’ "
模板字符串表示多行字符串,所有的空格和缩进都会被保留在输出之中。
模板字符串中嵌入变量,需要将变量名写在${}之中。 - 标签模板
- 1 . 当函数后面的字符串没有变量的时候就直接当作函数的参数来处理。
-
alert`hello` = alert([‘hello’])
- 2 . 函数后面有变量的时候先将在字符串处理成多个函数再调用函数。
let a = 5; let b = 10; tag`Hello ${ a + b } world ${ a * b }`; // 等同于 tag(['Hello ', ' world ', ''], 15, 50);
- 3.过滤 HTML 字符串,防止用户输入恶意内容
把用户给的内容的中的恶意字符转义一次就好了
- 4.多语言转换
使用标签模板在JavaScript里面嵌入其他语言
- 5.模板字符串的限制
在标签模板破解字符的时候会放松一点遇到不合法的字符串会返回undefined而不是报错,但是在标签模板的时候还是会报错的。