ES6模版字符串的用法

前言

早些年的数据交互通常是用模板引擎或是拼字符串的方式 输出模板,这种方案相当繁琐而不方便,ES6引入了 模板字符串来解决这个问题。

模板字符串(template string)

概念: 模板字符串是增强板的字符串, 用反引号( ` )标识,
用途:
1、当作普通字符串使用
2、定义多行字符串
3、在字符串中嵌入变量

基本用法

//、当作普通字符串使用
`In JavaScript '\n' is a line-feed.`

//、定义多行字符串
`In JavaScript this is
 not legal.`
console.log(`string text line 1
string text line 2`);

//、在字符串中嵌入变量
var name = "Bob", time = "today";
`Hello ${name}, how are you ${time}?`

**注意:
1、因为模板字符串是用反引号(  `  )标识,
所以如果在模板字符串中需要使用反引号,需要在前面用反斜杠转译
 `yo`world
  var str=`\`yo\`world\
2、如果使用模板字符串表示多行字符串,所有的空格和缩进都会被保留在输出中
3、在模板字符串中嵌入变量,需要将变量名写在${}中
     `Hello ${name}, how are you ${time}?`
4、在${}中,可以放入任意的javascript表达式,可以进行运算,以及引用对象属性
   var x = 1;
   var y = 2;

   `${x} + ${y} = ${x + y}`
   // "1 + 2 = 3"

   `${x} + ${y * 2} = ${x + y * 2}`
   // "1 + 4 = 5"

   var obj = {x: 1, y: 2};
   `${obj.x + obj.y}`
   // 3
5、模板字符串中还可以调用函数
  function fn() {
     return "Hello World";
   }

  `foo ${fn()} bar`
  // foo Hello World bar

标签模板

模板字符串可以紧跟在一个函数名后面,该函数将被调用 来处理这个模板字符串。这被称之为 “标签模板” 功能。
用途:
过滤html 字符串,防止用户故意输入恶意内容。

var message =
  SaferHTML`<p>${sender} has sent you a message.</p>`;

function SaferHTML(templateData) {
  var s = templateData[0];
  for (var i = 1; i < arguments.length; i++) {
    var arg = String(arguments[i]);

    // Escape special characters in the substitution.
    s += arg.replace(/&/g, "&")
            .replace(/</g, "<")
            .replace(/>/g, ">");

    // Don't escape special characters in the template.
    s += templateData[i];
  }
  return s;
}

上面代码中,sender变量往往是用户提供的,经过SaferHTML函数处理,里面的特殊字符都会被转义。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容