ES6模板字符串`的引用

ES6模板字符串`的引用传统的JavaScript语言,输出模板通常是这样写的(下面使用了jQuery的方法)。$(‘#result’).append(‘Thereare<b>’+basket.count+'</b>’+’itemsinyourbasket,’+'<em>’+basket.onSale+'</em>areonsale!’);上面这种写法相当繁琐不方便,ES6引入了模板字符串解决这个问题。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

传统的 JavaScript 语言,输出模板通常是这样写的(下面使用了 jQuery 的方法)。

$('#result').append(
  'There are <b>' + basket.count + '</b> ' +
  'items in your basket, ' +
  '<em>' + basket.onSale +
  '</em> are on sale!'
);

上面这种写法相当繁琐不方便,ES6 引入了模板字符串解决这个问题。

$('#result').append(` There are <b>${ 
    basket.count}</b> items in your basket, <em>${ 
    basket.onSale}</em> are on sale! `);

模板字符串(template string)是增强版的字符串,用反引号(`)标识。它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。

// 普通字符串
`In JavaScript '\n' is a line-feed.`

// 多行字符串
`In JavaScript this is not legal.`

console.log(`string text line 1 string text line 2`);

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

上面代码中的模板字符串,都是用反引号表示。如果在模板字符串中需要使用反引号,则前面要用反斜杠转义。

let greeting = `\`Yo\` World!`;

如果使用模板字符串表示多行字符串,所有的空格和缩进都会被保留在输出之中。

$('#list').html(` <ul> <li>first</li> <li>second</li> </ul> `);

上面代码中,所有模板字符串的空格和换行,都是被保留的,比如

  • 标签前面会有一个换行。如果你不想要这个换行,可以使用trim方法消除它。
$('#list').html(` <ul> <li>first</li> <li>second</li> </ul> `.trim());

模板字符串中嵌入变量,需要将变量名写在${}之中。

function authorize(user, action) { 
   
  if (!user.hasPrivilege(action)) { 
   
    throw new Error(
      // 传统写法为
      // 'User '
      // + user.name
      // + ' is not authorized to do '
      // + action
      // + '.'
      `User ${ 
    user.name} is not authorized to do ${ 
    action}.`);
  }
}

大括号内部可以放入任意的 JavaScript 表达式,可以进行运算,以及引用对象属性。

let x = 1;
let y = 2;

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

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

let obj = { 
   x: 1, y: 2};
`${ 
    obj.x + obj.y}`
// "3"

模板字符串之中还能调用函数。

function fn() { 
   
  return "Hello World";
}

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

如果大括号中的值不是字符串,将按照一般的规则转为字符串。比如,大括号中是一个对象,将默认调用对象的toString方法。
如果模板字符串中的变量没有声明,将报错。

// 变量place没有声明
let msg = `Hello, ${ 
    place}`;
// 报错

由于模板字符串的大括号内部,就是执行 JavaScript 代码,因此如果大括号内部是一个字符串,将会原样输出。

`Hello ${ 
    'World'}`
// "Hello World"

模板字符串甚至还能嵌套。

const tmpl = addrs => ` <table> ${ 
    addrs.map(addr => `
    <tr><td>${addr.first}</td></tr>
    <tr><td>${addr.last}</td></tr>
  `).join('')} </table> `;

上面代码中,模板字符串的变量之中,又嵌入了另一个模板字符串,使用方法如下。

const data = [
    { 
    first: '<Jane>', last: 'Bond' },
    { 
    first: 'Lars', last: '<Croft>' },
];

console.log(tmpl(data));
// <table>
//
//   <tr><td><Jane></td></tr>
//   <tr><td>Bond</td></tr>
//
//   <tr><td>Lars</td></tr>
//   <tr><td><Croft></td></tr>
//
// </table>

如果需要引用模板字符串本身,在需要时执行,可以写成函数。

let func = (name) => `Hello ${ 
    name}!`;
func('Jack') // "Hello Jack!"

上面代码中,模板字符串写成了一个函数的返回值。执行这个函数,就相当于执行这个模板字符串了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/171848.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Linux学习-vmware虚拟机安装mysql和Navicat连接数据库

    Linux学习-vmware虚拟机安装mysql和Navicat连接数据库

    2022年2月24日
    102
  • pycharm中debug无法调试_pycharm配置debug

    pycharm中debug无法调试_pycharm配置debug在多次跑项目中遇到情况,pacharm突然就无法运行项目了,表现就是run和debug两个选项按钮全部变灰色无法点击。造成这种情况的原因是因为我在一个很大的文件下创建了新的文件,每次运行都要为所有文件建造索引,文件很大的话这个时间就比较长,表现就是右下角有个进度条一直在刷新。这个时候的做法就是:右键文件名——&gt; Markdirectoryas… ——&gt;Exclude…

    2022年8月29日
    7
  • RegisterStartupScript 过期

    RegisterStartupScript 过期1.ClientScriptManager.RegisterStartupScript方法:  1)  ClientScriptManager.RegisterStartupScript (Type,String,String)  2)  ClientScriptManager.RegisterStartupScript (Type,String,String,

    2022年7月20日
    16
  • html表格空格符是什么,HTML中的空格符号是什么

    html表格空格符是什么,HTML中的空格符号是什么在HTML中的空格符号有:表示不断行的空白; 表示半个空白; 表示一个空白等在平时我们写文章时遇到空格时都会直接输入空格键来达到空格的效果,但是在HTML代码中如果我们输入空格键就会被忽略,达不到空格的效果,今天就像大家介绍HTML中空格代码如何写,希望对大家有所帮助。【推荐课程:HTML课程】方法是HTML空格转义字符,当我们需要几个空白字符时就输入几个例Gxl网提供大量免费、原创、…

    2022年10月4日
    2
  • Qt Creator的下载和安装

    Qt Creator的下载和安装Qt和QtCreator的区别Qt是C++的一个库,或者说是开发框架,里面集成了一些库函数,提高开发效率。QtCreator是一个IDE,就是一个平台,一个开发环境,类似的比如说VS,也可以进行Qt开发,当然VS中的Qt是作为一个插件插入VS平台的。下载QtCreator下载地址1:https://www.qt.io/download这是官网下载地址,选择开源opensou…

    2022年5月16日
    39
  • TensorFlow 安装教程

    趁着十一放假期间,有这么一点空闲时间,自己看了些tensorflow的资料,顺便在自己的机器上安装了一下tensorflow的环境。安装过程还算比较顺利,现在跟大家分享一下。1.准备好Anaconda环境tensorflow是属于很高层的应用。高层应用的一个比较大的麻烦就是需要依赖的底层的东西很多,如果底层依赖没有弄好的话,高层应用是没法玩转的。在极客学院有关tensorflow的教程中,提到了

    2022年4月9日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号