ES6 模板字符串Template String

1. 模板字符串简介:

  顾名思义,模板字符串是用来定义一个模板是使用的,就像Vue,React中的template语法。

  首先,先来了解一下template string的基本用法: 在ES5中,我们大多都有过拼串的经历吧。

const person = {
    name: ‘zhang‘,
    age: 18,
    hobby: ‘coding‘,
    introduce () {
        console.log(‘hello, everyone , my name is ‘ + this.name + ‘, I am ‘ + thiss.age + ‘ years old, I like ‘ + this.hobby + ‘ very much.‘);
    },
}
// 每次敲完这样的代码都有种崩溃的柑橘,万一那个地方不小心删掉了一个引号,然后就...

// 然而在ES6中,为我们提供了模板字符串的功能
const person = {
    name: ‘zhang‘,
    age: 18,
    hibby: ‘coding‘,
    introduce () {
        console.log(`hello, everyone, my name is ${this.name}, I am ${this.age} years old, I like ${this.hobby} very much.`);
    },
}
// 虽然键入的字数没有太太减少,不过至少不用担心会少个引号了

  模板字符串的语法是反引号(`` --> 键盘左上角),利用反引号将字符串封闭起来,模板字符串中可以使用变量,及使用${}的方法,大括号之间可以是JavaScript变量,表达式,也可以是函数执行的结果,这就是模板字符串的基本用法。

const num = 5;
function square (num) {
    return num ** 2;
}

console.log(`the result of square ${num} is ${square(num)}`);
console.log(`the result of square ${num} is ${num ** 2}`);
// log ‘the result of square 5 is 25‘

// 需要注意的是。当模板字符串中的变量不是一个字符串时,就会自动调用变量的toString()方法
const person = {
    name: ‘zhang‘,
    age: 18,
    hobby: ‘coding‘,
}
console.log(`hello, ${person}`); // log ‘hello, [Object Object]‘

person = {
    name: ‘zhang‘,
    age: 18,
    hobby: ‘coding‘,
    toString () {
        return `${this.name} ${this.age}`;
    }
}
console.log(`hello, ${person}`); // log ‘hello, zhang 18‘
// 会自动调用对象的toString()方法,将对象序列化

2.模板字符串换行

  我们一直都知道JavaScript中普通的字符串是不可以换行的,当我们设计html模板的时候就会出现结构混乱的情况。 

const template = ‘<ul>
<li></li>
<li></li>
<li></li>
</ul>‘
// ---> 这样的做法在JavaScript中时不被允许的
// 在ES5中,为了使模板的结构更加清晰化,不得不使用拼串的方式实现换行
const template = ‘<ul>‘ +
					‘<li></li>‘ +
					‘<li></li>‘ +
					‘<li></li>‘ +
				‘</ul>‘;
// 可想而知,这样的做法效率挺低的
// 使用模板字符串,里面的字符串就可以换行显示了
const template = `<ul>
					<li></li>
					<li></li>
					<li></li>
				</ul>`
// 使用模板字符串存在一个问题,template string 中的字符串有点类似于<pre></pre>标签中的文本的感觉。模板字符串是会将字符串中的空格都保留下来的,但是在html模板中,// 渲染到浏览器中时不会将连续的空格渲染到界面上,因此可以正常显示。
// 有了模板字符串,在写Vue,React模板语法的时候也能够方便很多。

   

3.标签模板语法

  在ES6中,模板字符串可以跟在函数名之后,作为参数

alert `123`; // 相当于执行alert(‘123‘)

  这种语法相当于是一种特殊的函数调用

let a = 12;
let b = 20;
function fn (strArr, ...rest) {
    console.log(strArr, rest);
}
fn `the sum of ${a} and ${b} is ${a + b}`;

  

  当模板字符串中存在变量时,会将模板字符串分解为多个参数传给标签函数

    1.先将模板字符串中的变量值分离出来,若变量所处的位置在串头或者串尾,则将变量替换为’‘(空串),将

    字符串转换成一个数组作为第一个参数传入函数

    2.将分离出来的变量依次作为变量传给函数

    3.调用函数

    (但是由于变量的参数个数不是固定的,所以通常会用一个rest参数接收变量,并形成数组)

    原本调用的应该是 fn(arrStr, value1, value2, value3);

function concat (arrStr, ...rest) {
    let str = arrStr[0];
    rest.forEach((value, index) => {
        // 在此处可以对字符串做出处理,返回需要的字符串格式
        str += value + arrStr[index + 1];
    })
    console.log(str);
}

// 使用上述函数能够将模板字符串完整地显示出来(虽然好像没有什么太大用处)
let a = 10;
let b = 20;
concat `the sum of ${a} and ${b} is ${a + b}`; // log ‘the sum of 10 and 20 is 30‘

  2019-03-17 00:32:01

原文地址:https://www.cnblogs.com/zhangzhengsmiling/p/template_string.html

时间: 2024-08-26 12:37:10

ES6 模板字符串Template String的相关文章

ES6模板字符串

看了阮老师的ES6入门再加上自己的一些理解整理出的学习笔记 介绍: 样子: `` 反引号,tab上面的那个键,同该符号包裹的字符串能够带来的功能如下: 可以包涵换行 在反引号以内,可以有多个换行,都能够在使用的时候被识别 可以嵌入变量 使用美元符号和大括号包裹变量${对象名.属性名} 可以原生输出  原生输出包含转义字符串的内容String.raw模板字符串 例子: 传统的JavaScript语言,输出模板通常是这样写的,字符串拼接很让人头疼,也很容易出错. $('#result').appen

es6 模板字符串

1.反引号模板,可以换行 2.反引号模板,可以嵌套 用+``来嵌套 好处:语法更加简洁 var name="123456一堆返回的数据" var desc="title内容"; var tpl=` <div> <span>${name}</span> </div> `; console.log(tpl); /*<div> <span>123456一堆返回的数据</span> <

201704221048_《ES6模板字符串》

const tmpl = addrs => ` <table> ${addrs.map(addr => ` <tr><td>${addr.first}</td></tr> <tr><td>${addr.last}</td></tr> `).join("")} </table> `; const data = [ { first: "<Jan

ES6之字符串学习

以下是常用的方法不是全部方法 1.codePointAt()方法 有一些字段需要4个字节储存,这样charCodeAt方法的返回就是不正确的,用codePointAt()方法就可以返回 十进制的值.如果要十六进制的值,可以使用toString方法转换 var s = '??a'; s.codePointAt(0).toString(16) // "20bb7" s.codePointAt(2).toString(16) // "61" 2.String.fromCo

ES6特性-带标签的模板字符串(tagged template)

tagged template: 加在模板字符串前面加一个标签(函数). let dessert = = '甜品' drink = '茶' let breakfast = kitchen`今天的早餐是${dessert} 与 ${drink}!` function kitchen(strings,...values){ console.log(strings); console.log(values); } strings和value都是数组,里面分别是string和value: 原文地址:ht

深入浅出ES6(四):模板字符串

作者 Jason Orendorff  github主页  https://github.com/jorendorff 反撇号(`)基础知识 ES6引入了一种新型的字符串字面量语法,我们称之为模板字符串(template strings).除了使用反撇号字符 ` 代替普通字符串的引号 ' 或 " 外,它们看起来与普通字符串并无二致.在最简单的情况下,它们与普通字符串的表现一致: context.fillText(`Ceci n'est pas une chaîne.`, x, y); 但是我们并

ES6的全新特性:模板字符串

作为JavaScript的未来,ES6已经到来.作为已完成的标准,ES6带来了许多新特性使其在如今的web世界仍有竞争力.ES6的方方面面不一定全都适合你,本文集会简要介绍一些顺手且可行的新特性. 我编写JavaScript代码更喜欢使用单引号来定义字符串,而不是双引号.对JavaScript来说两者都可以,下面的两行代码其实作用相同: var animal = "cow"; var animal = 'cow'; 我更喜欢单引号是有原因的.首先,单引号在组合使用HTML字符串和引用属

ES6新语法之---对象字面量扩展、模板字符串(5)

这节课学习ES6中对象字面量扩展和新增模板字符串 第一部分:对象字面量扩展 1.简洁写法 ES6对于对象字面量属性提供了简写方式. 1.1:属性简写 //传统写法 var x = 2, y = 3, o = { x: x, y: y }; //ES6简洁写法 var x = 2, y = 3, o = { x, //属性名和赋值变量名相同时,可简写 y }; 1.2:方法简写 //传统写法 var o = { x: function() { //... }, y: function() { //

ES6中模板字符串的使用

要把多个字符串连接起来,可以用"+"号连接: var name = '张三'; var sex = '男';var age= 18; var message = '姓名:'+name + ',性别:' + sex +',今年' + age + '岁了!'; alert(message); ES6新增了一种模板字符串,表示方法和上面的多行字符串一样,但是它会自动替换字符串中的变量: var name = '张三'; var age = 18; alert(`姓名:${name}, 年龄: