大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
前言:看了MDN的官方文档,让我一个头两个大。可能又陷入了完美主义的陷阱:总是想一下子把关于某方面的知识全部看完,全部看懂。就像我本来只是想查看一下单词take,却把所有的关于take的短语看了一遍,结果一个没记住。有些用法可能从它诞生到以后被废弃都使用不到,花费时间在它上面没有任何意义。因此,我是想介绍一下它最基础,最核心的用法。其他不常用用法可能会一笔带过。
一、模板字符串
模板字符串是可以插入表达式的字符串字面量。
在ES6(ES2015)中引入,另外,它还可以具有多行文本,换句话说可以直接输出回车换行符。
1. 模板字符串和传统字符串比较
传统字符串字面量使用单引号''
或者双引号""
,如下所示
var str = 'hello world';
var str2 = "hello world";
模板字符串使用反单引号(backquote) ``
,如下所示
var str3 = `hello world`;
反单引号位置,如下图所示,英文输入状态下按下可输入
形式虽然有差别,但是作为字符串字面量本质上是完全等价的。
2. 模板字符串可以插入表达式 (重点)
语法如下
`${expression}`
简介:expression可以是任意常量、变量、函数调用。在${expression}前后,也可以有任意的其他合法的字符,例如`abc${expression}xyz`。最终,${expression} 会转化为字符串和前后的字符串拼接,如果有的话。
当没有字符串时,我们想打印一个对象的信息,只能通过字符串拼接。
var xiaoming = {
name: '小明',
age: 14,
sex: 'male'
};
var bio = 'name: ' + xiaoming.name + ', age: ' + xiaoming.age + ', sex: ' + 'male';
console.log(bio);
现在,只有三个属性,拼接字符串还可以介绍。但是,当对象的属性比较多时,拼接字符串就会很费时费力。这时,应该用模板字符串。
var xiaoming = {
name: '小明',
age: 14,
sex: 'male'
};
var bio = `name: ${
xiaoming.name}, age: ${
xiaoming.age}, sex: ${
xiaoming.sex}`;
console.log(bio);
可以达到相同的目的
表达式可以是一个常量、变量、函数调用,它们最终都可返回一个值,这个值会被转换成字符串类型,然后和其他字符拼接。如果是引用类型的值,会调用对象的toString方法,最终把返回字符串拼接
3. 模板字符串可以有多行文本
可以直接在``
中输入回车换行符
var str = `我是第一行 我是第二行`
输出效果
这在传统字符中是不允许的,直接插入换行符
JavaScript会报错:
主要适用于字符串中包含HTML标签的场景。如果是纯文本字符串,你输入回车字符串,这是代码缩进中的字符也会被包含进来。
输出效果
这时,你只能把代码中的缩进字符删除,但是会影响代码的可读性,得不偿失。但是如果字符串中时html标签,最终要插入到dom树中,缩进的字符会因为html的空白折叠现象忽略,因此可以使用。如果单纯再代码中使用字符串,完全没必要使用这个功能,简直是一种鸡肋的存在。
二、学生信息加载demo
一个小demo,练习下模板字符串的使用
代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style> span {
font-weight:bold; } </style>
</head>
<body>
<h1>学生信息列表</h1>
<ul id="list">
<li id='info'>信息加载中...</li>
</ul>
<script> const students = [ {
name: 'Alice', age: 20, sex: 'famale' }, {
name: 'Jimmy', age: 15, sex: 'male' }, {
name: 'xiaoxiao', age: 23, sex: 'female' } ]; const list = document.querySelector('#list'); let index = 0; const printTimer = setInterval(()=>{
if (index >= students.length) {
clearInterval(printTimer); document.getElementById('info').innerText = '信息加载完毕!'; } let liNode = document.createElement('li'); liNode.innerHTML = `<span>name: </span>${
students[index].name}, <span>age: </span>${
students[index].age}, <span>sex: </span>${
students[index].sex}`; list.appendChild(liNode); index ++; }, 2000) </script>
</body>
</html>
效果如下:
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/171842.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...