模板字面量(模板字符串)

纸飞机 发表于 2021/10/18 23:50:28 2021/10/18
【摘要】 模板字面量是创建字符串的新字面量语法,使用反引号(`)来分界。有三种特性: 插值,多行和标记。 插值 使用占位符${expression} 将动态值放入创建的字符串中。 let name = "strick",age = 29,str;str = `name is "${name}".age is ${age}.`;co...

模板字面量是创建字符串的新字面量语法,使用反引号(`)来分界。有三种特性: 插值,多行和标记。

插值

使用占位符${expression} 将动态值放入创建的字符串中。


  
  1. let name = "strick",
  2. age = 29,str;
  3. str = `name is "${name}".age is ${age}.`;
  4. console.log(str)
  5. //name is "strick".age is 29.

多行字符串

原生支持创建多行字符串,不需要再用加号,反斜线和换行符。能识别空白符。


  
  1. let multi = `first line
  2. second line
  3. third line`;
  4. console.log(multi)
  5. //输出
  6. first line
  7. second line
  8. third line

标记

一种特殊方式的函数调用,函数名后面直接跟模板字面量 , 它一 般会包含两个参数,第一个是由没有被替换的部分组成的数组,第二个是剩余参数,包含了所有占位符中的计算结果。


  
  1. //示例:
  2. function foo(strings,...values){
  3. console.log(strings)
  4. console.log(values)
  5. }
  6. const desc = 'awesome'
  7. foo`Everything is ${desc}!]`
  8. //["Everything is ","!"]
  9. //[“awesome”]

  
  1. //应用
  2. //过滤HTML字符串,防止用户输入恶意内容
  3. function filter(strings,...values){
  4. return strings.reduce((s,v,idx)=>{
  5. if(idx>0){
  6. const prev = values[idx-1]
  7. .replace(/</g,"&lt;")
  8. .replace(/>/g,"&gt;")
  9. s+=prev
  10. }
  11. return s+v
  12. })
  13. }
  14. const badCode = `<script>alert("abc")</script>`
  15. const message = filter`<p>${badCode}
  16. has been transformed safely~`
  17. console.log(message)

输出 :

文章来源: root181.blog.csdn.net,作者:前端纸飞机,版权归原作者所有,如需转载,请联系作者。

原文链接:root181.blog.csdn.net/article/details/119859699

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。