目录

第 5 章 ECMASript 9 新特性

5.1. Rest/Spread 属性

5.2. 正则表达式命名捕获组

5.3. 正则表达式反向断言

5.4. 正则表达式 dotAll 模式

第 6 章 ECMASript 10 新特性

6.1. Object.fromEntries

6.2. trimStart 和 和 trimEnd

6.3. Array.prototype.flat 与 flatMap

6.4. Symbol.prototype.description

第 7 章 ECMASript 11 新特性

7.1. String.prototype.matchAll

7.2. 类的私有属性

7.3. Promise.allSettled

7.4. 可选链操作符  ?.

7.5. 动态 import 导入

7.6. globalThis 对象

7.7 BigInt


相关视频链接: 尚硅谷Web前端ES6教程,涵盖ES6-ES11_哔哩哔哩_bilibili

第 5 章 ECMASript 9 新特性

5.1. Rest/Spread 属性

Rest 参数与 spread 扩展运算符在 ES6 中已经引入,不过 ES6 中只针对于数组,在 ES9 中为对象提供了像数组一样的 rest 参数和扩展运算符

//rest 参数function connect({host, port, ...user}){console.log(host);console.log(port);console.log(user);
}connect({host: '127.0.0.1',port: 3306,username: 'root',password: 'root',type: 'master'
});
//对象合并const skillOne = {q: '天音波'
}const skillTwo = {w: '金钟罩'
}const skillThree = {e: '天雷破'
}
const skillFour = {r: '猛龙摆尾'
}const mangseng = {...skillOne, ...skillTwo, ...skillThree, ...skillFour};
console.log(mangseng);//运行结果:
//Object
//e: "天雷破"
//q: "天音波"
//r: "猛龙摆尾"
//w: "金钟罩"
//[[Prototype]]: Object

5.2. 正则表达式命名捕获组

ES9 允许命名捕获组使用符号『?<name>』,这样获取捕获结果可读性更强

//声明一个字符串
let str = '<a href="http://www.atguigu.com">lalal</a>';//提取 url 与 『标签文本』
const reg = /<a href="(.*)">(.*)<\/a>/;
//第一个(.*)表示http://www.atguigu.com,第二个(.*)表示lalal//执行
const result = reg.exec(str);console.log(result);
console.log(result[1]);  //http://www.atguigu.com
console.log(result[2]);  //lalal
let str = '<a href="http://www.atguigu.com">lalal</a>';
//分组命名
const reg = /<a href="(?<url>.*)">(?<text>.*)<\/a>/;const result = reg.exec(str);console.log(result.groups.url);  //http://www.atguigu.comconsole.log(result.groups.text);  //lalal

5.3. 正则表达式反向断言

ES9 支持反向断言,通过对匹配结果前面的内容进行判断,对匹配进行筛选

//声明字符串
let str = 'JS5211314你知道么555啦啦啦';
//正向断言
const reg = /\d+(?=啦)/; //判断555这个数字后面是否为啦这个字
const result = reg.exec(str);
console.log(result);
//声明字符串
let str = 'JS5211314你知道么555啦啦啦';//反向断言
const regu = /(?<=么)\d+/;  //判断555数字前面是否是么这个字
const result = reg.exec(str);
console.log(result);

5.4. 正则表达式 dotAll 模式

正则表达式中点.匹配除回车外的任何单字符,标记『s』改变这种行为,允许行终止符出现

let str = `<ul><li><a>肖生克的救赎</a><p>上映日期: 1994-09-10</p></li><li><a>阿甘正传</a><p>上映日期: 1994-07-06</p></li></ul>`;
//声明正则
//原来的写法:const reg = /<li>\s+<a>(.*?)<\/a>\s+<p>(.*?)<\/p>/;//单个匹配:
const reg =/<li>.*?<a>(.*?)<\/a>.*?<p>(.*?)<\/p>/s;//执行匹配
const result = reg.exec(str);
console.log(result);
        let str = `<ul><li><a>肖生克的救赎</a><p>上映日期: 1994-09-10</p></li><li><a>阿甘正传</a><p>上映日期: 1994-07-06</p></li></ul>`;//声明正则const reg = /<li>.*?<a>(.*?)<\/a>.*?<p>(.*?)<\/p>/gs;let result;let data = [];while(result = reg.exec(str)){data.push({title: result[1], time: result[2]});}//输出结果console.log(data);

第 6 章 ECMASript 10 新特性

6.1. Object.fromEntries

        //二维数组//将二维数组转换为对象const result = Object.fromEntries([['name','kblhk'],['xueke', 'Java,大数据,前端,云计算']]);console.log(result);//Map// const m = new Map();// m.set('name','ATGUIGU');// const result = Object.fromEntries(m);//Object.entries ES8//将对象转换为二维数组//const arr = Object.entries({//    name: "lkjkj"//})//console.log(arr);

6.2. trimStart 和 和 trimEnd

        // trimlet str = '   iloveyou   ';console.log(str);console.log(str.trimStart());  //清除字符串左边的空白console.log(str.trimEnd());    //清除右边的空白

6.3. Array.prototype.flat 与 flatMap

flat:将多维数组转化为低位数组

        参数为深度 是一个数字


const arr = [1,2,3,4,[5,6]];
console.log(arr.flat());  //1,2,3,4,5,6const arr = [1,2,3,4,[5,6,[7,8,9]]];
console.log(arr.flat());   //1,2,3,4,5,6,[7,8,9]const arr = [1,2,3,4,[5,6,[7,8,9]]];
console.log(arr.flat(2));  //1,2,3,4,5,6,7,8,9

flatMap

const arr = [1,2,3,4];const result = arr.flatMap(item => [item * 10]);console.log(result); //10,20,30,40

6.4. Symbol.prototype.description

        //创建 Symbollet s = Symbol('lalala');console.log(s.description);  //lalala

第 7 章 ECMASript 11 新特性

7.1. String.prototype.matchAll

matchAll:对数据的批量提取

let str = `<ul><li><a>肖生克的救赎</a><p>上映日期: 1994-09-10</p></li><li><a>阿甘正传</a><p>上映日期: 1994-07-06</p></li>
</ul>`;//声明正则
const reg = /<li>.*?<a>(.*?)<\/a>.*?<p>(.*?)<\/p>/sg//调用方法
const result = str.matchAll(reg);// for(let v of result){
//     console.log(v);
// }
const arr = [...result];
console.log(arr);

7.2. 类的私有属性

       class Person{//公有属性name;//私有属性#age;#weight;//构造方法constructor(name, age, weight){this.name = name;this.#age = age;this.#weight = weight;}intro(){console.log(this.name);console.log(this.#age);console.log(this.#weight);}}//实例化const girl = new Person('晓红', 18, '45kg');// console.log(girl.name);// console.log(girl.#age);  //会报错// console.log(girl.#weight);girl.intro();

7.3. Promise.allSettled

//声明两个promise对象
const p1 = new Promise((resolve, reject)=>{setTimeout(()=>{resolve('商品数据 - 1');},1000)
});const p2 = new Promise((resolve, reject)=>{setTimeout(()=>{resolve('商品数据 - 2');// reject('出错啦!');},1000)
});//调用 allsettled 方法// const result = Promise.allSettled([p1, p2]);
//都为resolve或有一个为rejected时都正常运行const res = Promise.all([p1, p2]);
//都为resolve时返回值,有一个为rejected就会报错console.log(res);

7.4. 可选链操作符  ?.

        // ?.function main(config){// const dbHost = config && config.db && config.db.host;const dbHost = config?.db?.host;console.log(dbHost);}main({db: {host:'192.168.1.100',username: 'root'},cache: {host: '192.168.1.200',username:'admin'}})

7.5. 动态 import 导入

在html文件中

<button id="btn">点击</button>
<script src="./js/app.js" type="module"></script>

在app.js文件中

// import * as m1 from "hello.js";
//获取元素
const btn = document.getElementById('btn');btn.onclick = function(){import('hello.js').then(module => {module.hello();});
}

在hello.js文件中

export function hello(){alert('Hello');
}

7.6. globalThis 对象

如果想对全局对象做一个操作,那么此时可以忽略环境直接使用globalThis

7.7 BigInt

//大整形
// let n = 521n;
// console.log(n, typeof(n));//函数
// let n = 123;
// console.log(BigInt(n));
// console.log(BigInt(1.2));//大数值运算
let max = Number.MAX_SAFE_INTEGER;
console.log(max);
console.log(max + 1);
console.log(max + 2);console.log(BigInt(max));
console.log(BigInt(max) + BigInt(1));
console.log(BigInt(max) + BigInt(2));//BigInt型数字不可以直接与整数做运算
//console.log(BigInt(max) + 2);  //会报错

ES9,ES10,ES11知识点相关推荐

  1. ES6/ES7/ES8/ES9/ES10常用特性和新特性最全总结

    ES6 ES6在ES5的基础上新增了一系列特性,这里仅列出常用特性 变量的改变,添加了块级作用域的概念 let声明变量(块级作用域),let是更完美的var,它声明的全局变量不是全局属性widow的变 ...

  2. ES7 ES8 ES9 ES10 新特性总结思考

    学习在于总结,发现并没有对于新出的一些语言特性进行总结,正好最近有时间,可以把这些进行总结以及运用,也许在项目中已经使用. ES7 Array includes方法 求幂运算符 ES8 Async F ...

  3. ES7-ES11新特性汇总

    前言 ES全称ECMAScript,ECMAScript 和 JavaScript 的关系是,前者是后者的规范,后者是前者的一种实现,从15年es6发版后,到目前的es11,es的新特性被广泛使用,成 ...

  4. ES10~ES13常见新特性

    文章目录 1.ES10新特性 1.1 flat/flatMap 1.2 Object fromEntries 1.3 trimStart/trimEnd 2.ES11新特性 2.1 BigInt 2. ...

  5. ES7-12内容详解

    ES7-ES12知识点解析 一.ES7主要内容 1. Array Includes 在ES7之前,如果我们想判断一个数组中是否包含某个元素,需要通过 indexOf 获取结果,并且判断是否为 -1. ...

  6. 【JavaScript高级】ES7-ES13常用新特性

    文章目录 ES7 Array Includes 指数 ES8 Object.values Object.entries String Padding Trailing-Commas Object De ...

  7. ES6、ES7、ES8、ES9、ES10、ES11、ES12知识点总结

    前言:ES6大家已经在工作中用的炉火纯青了,那么ES6的知识点就不再详细介绍了,一起学习一下ES7 --- ES12 的知识点吧!为了年后的金三银四 冲.冲.冲!!! 目录 一.ES6 二.ES201 ...

  8. ES7、ES8、ES9、ES10、ES11、ES12、ES13、ES14(ES进阶之路二)

    简介 JavaScript是世界上发展最快的编程语言之一,不仅可以用于编写运行在浏览器的客户端程序,随着Node.js的发展,JavaScript也被广泛应用于编写服务端程序.而随着JavaScrip ...

  9. ES7、ES8、ES9、ES10、ES11 新特性 总结

    目录 ES7新特性 一.Array.prototype.includes 二.指数操作符 ES8新特性 一.async 和 await 1.async 函数 2.await 表达式 async和awa ...

最新文章

  1. Docker overlay网络互通
  2. setContentView是如何一步一步被显示出来的?
  3. 【Java】详解菜单组件
  4. 谷歌是 CNCF 开源项目最大贡献者,红帽次之
  5. 人脸识别技术原理与工程实践
  6. 高德地图的标志放大_点标记-覆盖物-教程-地图 JS API | 高德地图API
  7. vscode 显示分支_Git以及vscode里的使用
  8. 华为王成录:鸿蒙 OS 不是安卓、iOS 的拷贝;拼多多回应「删除手机照片」事件 | 极客头条...
  9. Linus Torvalds:未来 25 年,Linux 风采依旧!
  10. 模块化日常:开源库与私有库重名
  11. 3D呈现transform-style(CSS3)
  12. Nginx惊群问题分析及解决
  13. HTML:网页设计案例1
  14. uniapp个人中心界面模板
  15. 2007 word打开无响应
  16. Flipped 阅读笔记
  17. 成都市住房公积金提取指南办理手续流程
  18. 毕业论文知识点记录(六)——基于R语言优化maxent模型
  19. 跨站点请求伪造(CSRF)
  20. 重装linux后没声音,笔记本电脑安装ubuntu系统后外放没有声音 ,耳机正常,三步解决办法...

热门文章

  1. 在excel中如何筛选重复数据_EXCEL如何快速筛选重复数据,并将结果快速复制到其他单元格...
  2. 服务器一直被攻击怎么办?
  3. JS 复习(6)JavaScript对象
  4. SEAndroid安全机制中的文件安全上下文关联分析
  5. 国内高校大数据教研机构调研报告
  6. 月结5 - 外币评估[FAGL_FC_VAL/FAGL_FCV/OB59/OBA1]
  7. 2022年3月15日黑马第三天
  8. 虚拟机linux开启端口 与阿里云服务器开启端口的方法
  9. 图形处理(八)点云重建(上)点云滤波、尖锐特征边增采样、移除离群点
  10. Good Luck in CET-4 Everybody! (巴什博弈 bash game)