当前位置:网站首页>字符串的扩展
字符串的扩展
2022-07-31 05:10:00 【F班的小夏同学】
字符串的遍历器接口
ES6为字符串添加了遍历器接口,使得字符串可以被for…of遍历循环。
for(let codePoint of 'foo){
console.log(codePoint)
}
// "f"
// "o"
// "o"
模板字符串
模板字符串是增强版的字符串,用反引号(`)标识。它可以当做普通字符串来使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。
//普通字符串
`In Javascript '\n' is a line-feed.`
//多行字符串
`In Javascript this is not legal`
console.log(`string text line 1 string text linge 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
// + '.'
`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"
如果需要引用模板字符串本身,在需要时执行,可以写成函数。
let func = (name) => `Hello ${
name}!`;
func('Jack') // "Hello Jack!"
上面代码中,模板字符串写成了一个函数的返回值。执行这个函数,就相当于执行这个模板字符串了。
边栏推荐
- Distributed Transactions - Introduction to Distributed Transactions, Distributed Transaction Framework Seata (AT Mode, Tcc Mode, Tcc Vs AT), Distributed Transactions - MQ
- 2022-07-30:以下go语言代码输出什么?A:[]byte{} []byte;B:[]byte{} []uint8;C:[]uint8{} []byte;D:[]uin8{} []uint8。
- 数据集划分以及交叉验证法
- 三子棋讲解(C语言)
- Object Detection Study Notes
- 剑指offer基础版 ----- 第25天
- [Introduction to MySQL 8 to Mastery] Basics - silent installation of MySQL on Linux system, cross-version upgrade
- 第7章 网络层第2次练习题答案(第三版)
- 数据库上机实验5 数据库安全性
- Distributed transaction processing solution big PK!
猜你喜欢
随机推荐
数据库学习笔记
[MQ I can speak for an hour]
面试Redis 高可靠性|主从模式、哨兵模式、Cluster集群模式
Proteus 8 Professional安装教程
About the problems encountered by Xiaobai installing nodejs (npm WARN config global `--global`, `--local` are deprecated. Use `--location=glob)
Linux的mysql报ERROR 1045 (28000) Access denied for user ‘root‘@‘localhost‘ (using password NOYSE)
【MQ我可以讲一个小时】
Anaconda配置环境指令
剑指offer基础版 ---- 第27天
C语言教程(一)-准备
With MVC, why DDD?
Kubernetes 证书可用年限修改
Temporal客户端模型
Redis的初识
第7章 网络层第1次练习题答案(第三版)
Flink sink redis writes to Redis
tf.keras.utils.get_file()
MySQL_关于JSON数据的查询
pycharm专业版使用
uni-app进阶之生命周期【day8】