时间:2021-07-01 10:21:17 帮助过:11人阅读
模板字符串出来以后,单引号、双引号哪个好的争论可以退出历史舞台的,模板字符串的`
最好!
单行文本
- `string text`
多行文本
- `string text line 1
- string text line 2`
内嵌表达式
- `string text ${expression} string text`
标签语法(不太喜欢)
- tag `string text ${expression} string text`
完全不 care 单引号和双引号,当然,转义`
是不可避免的,有所得必有所失去嘛
- let single=`string text, '' ""\`` // "string text, '' ""`"
\n
也可以走开了
- let multip=`string text line 1
- string text line 2`
- // "string text line 1
- // string text line 2"
- 所以我们可以这么写代码
- "
- let dom=`
- 我要换行
- 我还要换行
- `
- "
- 虽然好像没什么卵用
这是模板字符串最大的作用了,有好极大好处呢
更强的阅读性和更不容易错的字符串拼接
- let name='jack',age=23
- let summary=`my name is ${name}, age is ${age}`
- console.log(summary) // "my name is jack, age is 23"
对比一下之前的字符串拼接
- let name='jack',age=23
- let summary='my name is ' + name + ', age is ' + age
- console.log(summary) // "my name is jack, age is 23"
可以内嵌表达式,表达式也可以很复杂,但是不推荐
- let num1 = 1, num2 = 2
- `${num1} + ${num2} = ${num1 + num2}` // '1 + 2 = 3'
模板字符串嵌套
- let inner=`${`${'1'}`}` // 1
我不太喜欢这个特性
- function myTag(strings, personExp, ageExp) {
- var str0 = strings[0]; // "that "
- var str1 = strings[1]; // " is a "
- var str2 = strings[2]; // " "
- var ageStr;
- if (ageExp > 99){
- ageStr = 'centenarian';
- } else {
- ageStr = 'youngster';
- }
- return str0 + personExp + str1 + ageStr;
- }
- var output = myTag`that ${ 'Mike' } is a ${ '22' }`;
- console.log(output);// that Mike is a youngster
标签函数的第一个参数strings.raw
储存着原始字符串,未经转义
- function tag(strings) {
- console.log(strings.raw[0]);
- }
- tag`string text line 1 \n string text line 2`; // "string text line 1 \n string text line 2"
使用String.raw()
也是一样的效果,\n
是两个字符。
- var str = String.raw`Hi\n${2+3}!`;
- // "Hi\n5!"
- str.length;
- // 6
- str.split('').join(',');
- // "H,i,\,n,5,!"
源码
- let name="jack",age=23
- let summary=`my name is ${name}, age is ${age}`
翻译后
- var name = "jack",
- age = 23;
- var summary = "my name is " + name + ", age is " + age;
以上就是ES6中模板字符串用法介绍(附示例)的详细内容,更多请关注Gxl网其它相关文章!