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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • phpproxy建立代理服务器_proxy设计模式

    phpproxy建立代理服务器_proxy设计模式代理,指的就是一个角色代表另一个角色采取行动,就象生活中,一个红酒厂商,是不会直接把红酒零售客户的,都是通过代理来完成他的销售业务。而客户,也不用为了喝红酒而到处找工厂,他只要找到厂商在当地的代理就行了,具体红酒工厂在那里,客户不用关心,代理会帮他处理。代理模式,就是给某一对象提供代理对象,并由代理对象控制具体对象的引用。代理模式涉及的角色:抽象主题角色,声明了代理主题和真实主题的公共…

    2022年10月30日
  • 2014 北京源创会非官方图片印象

    2014 北京源创会非官方图片印象

    2021年9月2日
  • 计算机网络 | 思科网络 | ACL通配符掩码「建议收藏」

    计算机网络 | 思科网络 | ACL通配符掩码「建议收藏」目录一.什么是通配符掩码二.使用通配符掩码三.通配符掩码示例1.使用通配符掩码匹配IPv4子网2.使用通配符掩码匹配网络范围四.计算通配符掩码1.通配符掩码计算:示例12.通配符掩码计算:示例23.通配符掩码计算:示例3五.通配符掩码关键字1.示例1:匹配单个IPv4地址的通配符掩码过程2.示例2:匹配所有IPv4地址的通配符掩码过程一.什么是通配符掩码通配符掩码是由32个二进制数字组成的字符串,路由器使用它来确定检查地址的

    2022年7月24日
  • zookeeper无法启动_悦动启动困难已解决

    zookeeper无法启动_悦动启动困难已解决zookeeper启动成功后zkServer.shstatus出错一、问题出现情形运行zookeeperd后显示启动成功:JMXenabledbydefaultUsingconfig:/data/programfiles/zookeeper-3.4.5/bin/../conf/zoo.cfgStarTIngzookeeper…STARTED但用zkServe…

    2022年10月20日
  • pycharm专业版激活码2021【2021最新】「建议收藏」

    (pycharm专业版激活码2021)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html9071407CR5-eyJsaWN…

    2022年3月22日
  • cJSON 使用详解

    cJSON 使用详解由于c语言中,没有直接的字典,字符串数组等数据结构,所以要借助结构体定义,处理json。如果有对应的数据结构就方便一些,如python中用json.loads(json)就把json字符串转变为内建的数据结构处理起来比较方便。一个重要概念:在cjson中,json对象可以是json,可以是字符串,可以是数字。。。cjson数据结构定义:#d…

    2022年6月15日

发表回复

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

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