ES9
1.给对象添加rest参数和扩展运算符
ES6中给数组添加了扩展运算符和rest参数,ES9对对象进行了扩展。通过扩展运算符合并时,相同属性名会覆盖。
<script>
//ES9里给对象新增了扩展运算符和rest参数,使用方法与ES6里相同/
//rest参数,放在形参里。
function connect({ host, port, ...user }) {
console.log(host);
console.log(port);
console.log(user);
}
connect({
host: "127.0.0.1",
port: 3306,
username: "admin",
password: "tiger",
type: "master",
});
//扩展运算符作为实参
const user1 = {
name: "张三",
age: 18,
};
const user2 = {
name: "李四",
age: 20,
};
const address = {
adds: "北京",
};
const number = {
num: 12345,
};
//合并时属性相同会覆盖
const user = { ...user1, ...user2, ...address, ...number };
console.log(user);
</script>
2.正则扩展\反向断言\dotAll
(1)ES9新增?<> 表达式,给待取值命名,并放在groups中,方便使用,不用再用下标。
(2)添加反向断言(?<=)
(3)dotAll:引入/s 修饰符。使得可以匹配任意单个字符。
<script>
let str = '<a href="https://www.baidu.com">百度</a>';
//正则表达式,ES9新增了?<>表达式,可以新增groups的属性和值----------------
const reg = /<a href="(?<url>.*)">(?<text>.*)<\/a>/;
const result = reg.exec(str);
console.log(result);
console.log(result.groups.url);
console.log(result.groups.text);
//正向断言------------------------------------------------------------
let str1 = "welcome520LIU";
// const reg1 = /\d+(?=L)/;
//反向断言:(\d+)表示以数字开头的连续数字-----------------------------------
const reg1 = /(?<=e)\d+/;
const result1 = reg1.exec(str1);
console.log(result1);
//dotAll模式"斜杠后面写要省略的符号,例如:换行s"----------------------------------------------------------
let str3 = `
<ul>
<li>
<a>肖申克的救赎</a>
<p>上映日期</p>
</li>
<li>
<a>阿甘正传</a>
<p>上映日期</p>
</li>
</ul>`;
//用.*代替多个换行 ?表示反贪婪
const reg3 = /<li>.*?<a>(?<name>.*?)<\/a>.*?<p>(?<date>.*?)<\/p>.*?<\/li>/gs;
let result3;
let data = [];
while ((result3 = reg3.exec(str3))) {
data.push({ title: result3.groups.name, time: result3.groups.date });
}
console.log(data);
</script>在这里插入代码片