首页 > 其他分享 >模版字符串

模版字符串

时间:2022-11-09 13:55:50浏览次数:47  
标签:name 模版 basket let 字符串 Hello 模板

传统的 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>
`); 

上面代码中,所有模板字符串的空格和换行,都是被保留的,比如<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}.`);
  }
} 

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

let x = 1;
let y = 2;

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

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

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

`foo ${fn()} bar`

如果大括号中的值不是字符串,将按照一般的规则转为字符串。比如,大括号中是一个对象,将默认调用对象的toString方法。

如果模板字符串中的变量没有声明,将报错。

let msg = `Hello, ${place}`;

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

`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));

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

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

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

标签:name,模版,basket,let,字符串,Hello,模板
From: https://www.cnblogs.com/xiaodongxier/p/mo-ban-zi-fu-chuan.html

相关文章

  • 来自学长的字符串
    FedyathePotterStrikesBack一上午过去了……关于当前时刻的所有子串,它的前缀提前算出来的答案可以直接加,所以只考虑在原有的答案上修改最后一个i添加的贡献,发现他是......
  • Part 4:Cocos2d-x开发实战-Cocos中的字符串、标签和菜单-关东升-专题视频课程
    Part4:Cocos2d-x开发实战-Cocos中的字符串、标签和菜单—17944人已学习课程介绍        介绍了Cocos2d-x文字和菜单相关知识,首选我们介绍了Cocos2d-x中的字符串,其......
  • Python 判断字符串是否为数字
    最近的一个小软件,遇到了一个问题就是需要把字符串转成数字,可字符串中有时候会出来特殊字符。所以只需要做一个转换函数才可以的。下面这个函数比较凑效。这里做一个笔记本......
  • 5 个 JavaScript 字符串操作库
    英文|https://blog.bitsrc.io/5-string-manipulation-libraries-for-javascript-9ca5da8b4eb8翻译|杨小二使用字符串可能是一项繁琐的任务,因为有许多不同的用例。例如,将......
  • 盘点一个Python处理Excel两列单元格中有类似字符串就返回1,没有就返回0的操作
    大家好,我是Python进阶者。一、前言前几天在才哥的Python交流群遇到了一个粉丝提问,提问截图如下:觉得还挺有意思的,都是Pandas基础操作,这里拿出来给大家一起分享下。二、......
  • 字符串类型如何格式化保留小数点后两位【ToString("0.00")】
    废话都不想写了,直接上图遇到将decimal字段或者double字段转换成字符串string类型字段时想直接保留小数点后面两位的时候可以有个比较简易的格式化写法也就是str.ToStr......
  • NC18386 字符串
    题目描述链接:https://ac.nowcoder.com/acm/problem/18386来源:牛客网小N现在有一个字符串S。他把这这个字符串的所有子串都挑了出来。一个S的子串T是合法的,当且仅当T中包......
  • 编写函数,不允许创建临时变量,求字符串的长度。
    #include<stdio.h>#include<string.h>int my_strlen(char *str){intcount=0;//计算字符串的长度while(*str!='\0') //递归的条件,应该是if,但是if不能实现循环,所以whil......
  • Leetcode练题系列(六): 字符串相关的算法
    LeetCode  ​​英文官网(推荐)​​  ​​中文官网​​  从2016年大二左右开始就接触算法,起初也简单练习过,但现在工作一段时间后,随着代码水平的提高(​​自我感觉​​)......
  • oracle添加字符串连接聚合函数wm_concat
    自从oracle新版废弃了wm_concat函数后,各种不方便,网上搜索到的自定义聚合函数也是问题多多,例如用varchar2(32767)定义返回值类型,4000会超,32767不一样会超吗?所以最终用clob类......