专业做曝光引流网站,金华市建设局官方网站,wordpress free cdn,wordpress 主题放在哪第3章 ECMASript 7 新特性
3.1. Array.prototype.includes
Includes 方法用来检测数组中是否包含某个元素#xff0c;返回布尔类型值
3.2. 指数操作符
在ES7中引入指数运算符「 **」#xff0c;用来实现幂运算#xff0c;功能与 Math.pow结果相同 第4章 ECMASript 8 新特…第3章 ECMASript 7 新特性
3.1. Array.prototype.includes
Includes 方法用来检测数组中是否包含某个元素返回布尔类型值
3.2. 指数操作符
在ES7中引入指数运算符「 **」用来实现幂运算功能与 Math.pow结果相同 第4章 ECMASript 8 新特性
4.1. async和 await
async和 await两种语法结合可以让异步代码像同步代码一样
4.1.1. async函数
async函数的返回值为 promise对象promise对象的结果由 async函数执行的返回值决定
1返回一个字符串 2返回的结果不是一个Promise 类型的对象 3抛出错误 4返回的结果是一个Promise对象则函数的返回结果是成功还是失败取决于这个Promise对象的结果是成功还是失败 4.1.2. await表达式
await必须写在 async函数中await右侧的表达式一般为 promise对象await返回的是 promise成功的值await的 promise失败了 , 就会抛出异常 , 需要通过 try...catch捕获处理 案例1async 和 await 结合读取文件
// 引入fs模块
const fs require(fs)
// 读取 为学
function readWeiXue() {return new Promise((resolve, reject) {fs.readFile(../14-ES6~ES11/resources/为学.md, (err, data) {if(err) {// 如果失败reject(err)}// 如果成功resolve(data)})})
}
// 声明一个async函数
async function main() {try {// 获取为学内容let weixue await readWeiXue()console.log(weixue.toString())} catch(e) {console.log(e)}
}main()
案例2async 和 await 结合发送AJAX请求 !DOCTYPE html
htmlheadmeta charsetutf-8 /meta nameviewport contentwidthdevice-width, initial-scale1title/title/headbodyscript typetext/javascript// 发送AJAX请求返回的结果是Promise对象function sendAJAX(url) {return new Promise((resolve, reject) {// 1. 创建对象const x new XMLHttpRequest()// 2. 初始化x.open(GET, url)// 3. 发送x.send()// 4. 事件绑定x.onreadystatechange function() {if(x.readyState 4) {if(x.status 200 x.status 300) {// 成功啦resolve(x.response)} else {// 失败reject(x.status)}}}})}// 1. promise then方法 测试sendAJAX(https://api.apiopen.top/getJoke).then(value {console.log(value)})// 2. async 与 await 测试/* async function main() {let result await sendAJAX(https://api.apiopen.top/getJoke)console.log(result)}main() *//script/body
/html4.2. Object.values和 Object.entries
Object.values()方法返回一个给定对象的所有可枚举属性值的数组Object.entries()方法返回一个给定对象自身可遍历属性 [key,value] 的数组 4.3. Object.getOwnPropertyDescriptors
该方法返回指定对象所有自身属性的描述对象
第5章 ECMASript 9 新特性
5.1. Rest/Spread属性
Rest参数与 spread扩展运算符在 ES6中已经引入不过 ES6中只针对于数组在 ES9中为对象提供了像数组一样的 rest参数和扩展运算符
/* Rest参数与spread扩展运算符在ES6中已经引入不过ES6中只针对于数组在ES9中为对象提供了像数组一样的rest参数和扩展运律符 */function connect({host, port, username, password}) {console.log(host);console.log(port);console.log(username);console.log(password)}connect({host: 127.0.0.1,port: 3306,username: root,password: root})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})5.2. 正则表达式命名捕获组
ES9允许命名捕获组使用符号 『 ?』 ,这样获取捕获结果可读性更强
let str a hrefhttp://www.atguigu.com尚硅谷/a;const reg /a href(?url.*)(?text.*)\/a/;const result reg.exec(str);console.log(result.groups.url);console.log(result.groups.text);5.3. 正则表达式反向断言
ES9支持反向断言通过对匹配结果前面的内容进行判断对匹配进行筛选。
//声明字符串 let str JS5211314你知道么555啦啦啦;//正向断言 const reg /\d(?啦)/;const result reg.exec(str);//反向断言 const reg /(?么)\d/;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.*?a(.*?)\/a.*?p(.*?)\/p/gs;//执行匹配 const result reg.exec(str);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
把键值对数组转成了对象
6.2. trimStart和 trimEnd
trimStart()和trimEnd() 去掉首部、尾部空格 6.3. Array.prototype.flat 与 flatMap
flatMap() 方法首先使用映射函数映射每个元素然后将结果压缩成一个新数组。它与 map 连着深度值为1的 flat 几乎相同但 flatMap 通常在合并成一种方法的效率稍微高一些。
6.4. Symbol.prototype.description
description 是一个只读属性它会返回 Symbol 对象的可选描述的字符串
第7章 ECMASript 11 新特性
7.1. String.prototype.matchAll
如果一个正则表达式在字符串里面有多个匹配现在一般使用g修饰符或y修饰符在循环里面逐一取出。 let str ullia肖克的救赎/ap上映日期 1994-09-10/p/lilia阿甘正传/ap上映日期 1994-07-06/p/li/ul// 声明正则const reg /li.*?a(.*?)\/a.*?p(.*?)\/p/sg// 调用方法const result str.matchAll(reg)console.log(result)for(let v of result) {console.log(v)}console.log(---------------)// const arr [...result]// console.log(arr)7.2. 类的私有属性
私有属性只能在类内部访问
7.3. Promise.allSettled 接收参数为promise数组返回promise对象状态永远为成功 始终能够得到每一个promise成功失败的结果
Promise.all()
返回的是promise对象返回状态有一个失败且都失败失败的值为数组里面失败的值
// 声明两个primiseconst p1 new Promise((resolve, reject) {setTimeout(() {resolve(商品数据 - 1)}, 1000)})const p2 new Promise((resolve, reject) {setTimeout(() {resolve(商品数据 - 2)// reject(商品数据 - 2 出问题了)}, 1000)})// 调用 allsettled()/* const result Promise.allSettled([p1, p2])console.log(result) */// 调用all()const res Promise.all([p1, p2])console.log(res)
总结 什么时候用 Promise.allSettled()
什么时候用 Promise.all()
每一个异步任务都想得到结果不管Promise的状态是成功还是失败就使用Promise.allSettled()异步任务要求每个都成功才能往下执行就使用Promise.all()
7.4. 可选链操作符
可选链操作符( ?. )允许读取位于连接对象链深处的属性的值而不必明确验证链中的每个引用是否有效。?. 操作符的功能类似于 . 链式操作符不同之处在于在引用为空(nullish ) (null 或者 undefined) 的情况下不会引起错误该表达式短路返回值是 undefined。与函数调用一起使用时如果给定的函数不存在则返回 undefined。 7.5. 动态 import导入
静态的import 语句用于导入由另一个模块导出的绑定。无论是否声明了 strict mode 导入的模块都运行在严格模式下。在浏览器中import 语句只能在声明了 typemodule 的 script 的标签中使用。
此外还有一个类似函数的动态 import()它不需要依赖 typemodule 的script标签。 在您希望按照一定的条件或者按需加载模块的时候动态import() 是非常有用的。而静态型的 import 是初始化加载依赖项的最优选择
7.6. globalThis对象
全局属性 globalThis 包含全局的 this 值类似于全局对象global object。
浏览器中 Node环境中
7.7. bigint类型
BigInt 是一种内置对象它提供了一种方法来表示大于 253 - 1 的整数。这原本是 Javascript中可以用 Number 表示的最大数字。BigInt 可以表示任意大的整数。 可以用在一个整数字面量后面加 n 的方式定义一个 BigInt 如10n或者调用函数BigInt()。