Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

模板字符串(es6) #3

Open
YoursJoker opened this issue Apr 4, 2020 · 0 comments
Open

模板字符串(es6) #3

YoursJoker opened this issue Apr 4, 2020 · 0 comments

Comments

@YoursJoker
Copy link
Owner

YoursJoker commented Apr 4, 2020

ES6总结系列之 模板字符串 篇

用法

模板字符串由一对反引号标识符组成,${}为取值表达式

let name = "Tony";
let age = 18 ;
name+"今年"+age+"岁" ;
//"Tony今年18岁"
等价于
`${name}今年${age}岁了`;
//"Tony今年18岁"

我们用传统写法表达字符串和变量的拼接写法非常冗余,ES6的模板字符串就可以很好的解决这个问题

要点

  • 模板字符串中如需用反引号,需要用\转义
let name = "Tony";
let age = 18;
`\`${name}\`今年${age}岁`;
//"`Tony`今年18岁"
  • 如果大括号里面的值不是字符串,则按照一般规则装换为字符(toString方法),特别注意的是,如果大括号里面是对象,则将返回[object Object],如下面代码
let obj = {};
`abc${obj}`;
//"abc[object Object]"
  • 大括号里面就是执行JavaScript代码,因此如果大括号内部是字符串,就会将原样输出
let x = 1;
let y = 2;

大括号里面是表达式,计算后输出
`${x} + ${y} = ${x + y}`
// "1 + 2 = 3"

大括号里面是字符串,将原样输出
`${"Hello World"}`
//"Hello World"
  • 模版字符串所有的空格和缩进都会被保留在输出之中
let newLis = "<li>1:aaa</li>"
let ul = 
`
<ul>
${newLis}
</ul>
`;
/*
<ul>
  <li>1:aaa</li>
</ul>
*/
  • 模板字符串可嵌套
let name = "Tony";
let age = 18 ;
`${name}今年${`${age}`}岁了`;
//"Tony今年18岁了"
  • 标签模板,函数名+模板字符串,其实就是另外一种调用函数的表达
function fn() {
    console.log(arguments);
}
let name = "Tony";
let age = 18 ;
fn`${name}今年${age}岁了`;
//{ '0': [ '', '今年', '岁了' ], '1': 'Tony', '2': 18 }

等同于
fn([ '', '今年', '岁了' ], 'Tony', 18);
//{ '0': [ '', '今年', '岁了' ], '1': 'Tony', '2': 18 }

返回的arguments第一个属性包含了所有的除了变量外的部分,变量在后面逐个显示;注意第一个数组个数总是要比变量多一个,可以把${name}今年${name}岁了看成一条线,把每个变量${name} ${name}看成是一个分割点,分割的结果总是分割点多一份;如果变量位于首尾的时候会分割出一个空字符串'';


总结

  • 模板字符串中如需用反引号,需要用\转义
  • 模版字符串所有的空格和缩进都会被保留在输出之中
  • 字符串里可以嵌套变量,大括号里内部可以放入任意的JavaScript表达式,可以进行运算,以及引用对象属性,函数
  • 模板字符串可嵌套
  • 使用标签模板,注意arguments第一个数包含所有非变量部分,且数量总比变量多一个

  • 欢迎star,持续更新ing...
  • ES6总结系列参考自阮一峰大神的《ES6入门教程》

上一篇:ES6总结系列之 变量的解构赋值 篇
下一篇:ES6总结系列之 函数的扩展 篇

@YoursJoker YoursJoker changed the title ES6总结系列之 模板字符串 篇 模板字符串(es6) Aug 3, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant