脑图模式
 
 
插入
ES7-ES12
ES7
Array.prototype.includes()
 
includes() 方法用来判断一个数组是否包含一个指定的值,如果包含则返回 true,否则返回 false
 
幂运算符 **
 
等同于 Math.pow()
 
ES8
Object.values(对象)
 
遍历键值,返回一个数组
 
Object.entries(对象)
 
返回键值对数组
 
Object.getOwnPropertyDescriptors()
 
获取一个对象的所有自身属性的描述符。
 
String.prototype.padStart
 
把指定字符串填充到字符串头部,返回新字符串。
 
 
语法:str.padStart(targetLength,[padString])
 
 
eg:   'abc'.padStart(10, "foo"); // "foofoofabc"
 
 
应用场景:   1、时间格式化,月份和日期 如果是一位前面给它填充一个0。2、手机号银行卡号身份证号星号加密
 
String.prototype.padEnd
 
填充到字符串尾部,语法同上
 
尾逗号 Trailing commas
 
许函数的最后一个参数有尾逗号
 
async/await
 
在不阻塞主线程的情况下使用同步代码实现异步访问资源的能力,并且使得代码逻辑更加清晰。
 
 
await 只能在 async 标记的函数内部使用
 
ES9
Object Rest & Spread
 
把一个对象的数据都拓展到另一个对象上,如果存在相同的属性名,只有最后一个会生效
 
 
rest 属性必须始终出现在对象的末尾
 
for await of
 
异步迭代器(for-await-of):循环等待每个Promise对象变为resolved状态才进入下一步
 
Promise.prototype.finally()
 
使用场景: loading关闭
 
String 扩展
 
模板字符串允许嵌套支持常见转义序列
 
ES10
Object.fromEntries()
 
把键值对列表(数组)转换为一个对象,这个方法是和 Object.entries() 相对的。
 
Array.prototype.flat()
 
按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
 
 
flat()参数是结构深度,默认为1;使用 Infinity,可展开任意深度的嵌套数组
 
 
var arr4 = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]];
arr4.flat(Infinity); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
 
 
`flat()` 方法会移除数组中的空项,不带参数:
var arr5 = [1, 2, , 4, 5];
arr5.flat(); // [1, 2, 4, 5]
 
Array.prototype.flatMap()
 
使用映射函数映射每个元素,然后将结果压缩成一个新数组。包含两部分功能一个是 map,一个是 flat(深度为1)
 
 
对比下 map 和 flatMap 的区别:
const numbers = [1, 2, 3]
numbers.map(x => [x * 2]) // [[2], [4], [6]]
numbers.flatMap(x => [x * 2]) // [2, 4, 6]
 
String.prototype.trimStart()
 
等同于trimLeft(),从字符串的开头删除空格
 
String.prototype.trimEnd()
 
从一个字符串的右端移除空白字符,trimRight 是别名
 
可选的Catch Binding
 
可以省略err参数
 
Symbol.prototype.description
 
可以通过 description 方法获取 Symbol 的描述
 
JSON.stringify() 增强能力
 
使用转义字符,修复超出范围的字符展示错误的问题
 
修订 Function.prototype.toString()
 
返回一个表示当前函数源代码的字符串,包含注释、空格和语法等详细信息。以前只会返回这个函数,不包含注释、空格等。
 
ES11
空值合并操作符??
 
当左侧的操作数为 null或者undefined时,返回其右侧操作数,否则返回左侧操作数
 
 
和 || 区别:左侧数值为假时(例如'',0,NaN,false),返回右侧操作数。
 
 
不能与 &&  和 || 组合使用
 
可选链 ?.
 
在引用为 null 或者 undefined 的情况下不会引起错误;
可选链不能用于赋值;
可选链与空值合并操作符一起使用
 
globalThis
 
获取不同环境下的全局 this 对象(也就是全局对象自身)
 
BigInt
 
定义:BigInt是JavaScript中一种可以用来表示任意精度整数的基本数据类型。使用场景: 主要用来进行大数值运算
 
 
在js中,对整数类型的数据,存在着最大极限,这个极限就是2**53=9007199254740992
 
 
为了计算的准确性,js也定义了最大安全整数,这个整数是9007199254740991
 
 
语法:
1. 直接添加字母n
2、使用 BigInt(),//BigInt(123)输出123n
 
 
不要混合操作BigInt类型和Number类型,会丢失精度
 
String.prototype.matchAll()
 
返回一个包含所有匹配正则表达式的结果及分组捕获组的迭代器(遍历器)。遍历器转为数组使用...运算符和Array.from()方法
 
 
使用场景:数据的批量提取
 
Promise.allSettled()
 
解决Promise.all()中并发的多个请求,若某个接口异常,整个都是失败,无法渲染出数据的问题。
 
 
Dynamic Import(按需引入/动态引入)
 
ES12
逻辑运算符和赋值表达式
&&=
 
x &&= 等效于 x && (x = y),当x为真时,x=y
 
||=
 
x ||= y 等同于:x || (x = y)
 
 
(x ||= y)运算仅在 x 为false时赋值
 
??=
 
(x ??= y) 仅在 x 是 (null 或 undefined) 时对其赋值。
 
String.prototype.replaceAll()
 
'aabbcc'.replaceAll('b', '.'); // 'aa..cc'
 
数字分隔符
 
增加数值的可读性
 
 
ES12中允许 JavaScript 的数值(小数和科学计数法也可)使用下划线(_)作为分隔符。
 
 
注意点:
不能放在数值的最前面(leading)或最后面(trailing)。
不能两个或两个以上的分隔符连在一起。
小数点的前后不能有分隔符。
科学计数法里面,表示指数的e或E前后不能有分隔符。
 
Promise.any
 
接受一组 Promise 实例作为参数,包装成一个新的 Promise 实例返回。
 
 
只要参数实例有一个变成fulfilled状态,包装实例就会变成fulfilled状态;如果所有参数实例都变成rejected状态,包装实例就会变成rejected状态。
 
 
Promise.any()跟Promise.race()方法很像,只有一点不同,就是Promise.any()不会因为某个 Promise 变成rejected状态而结束,必须等到所有参数 Promise 变成rejected状态才会结束。
 
 

可参考:https://juejin.cn/post/7046217976176967711

ES7-ES12总结篇的更多相关文章

  1. 你知道 ES6~ES12等叫法是怎么来的吗?

    你知道 ES6~ES12等叫法是怎么来的吗? 前言 作为一名前端开发,学习 JavaScript 自是天经地义的事,但是,JavaScript 的发展历史是怎样的,恐怕有相当一部分人都不太了解. 我们 ...

  2. TGL站长关于常见问题的回复

    问题地址: http://www.thegrouplet.com/thread-112923-1-1.html 问题: 网站配有太多的模板是否影响网站加载速度 月光答复: wp不需要删除其他的模板,不 ...

  3. jQuery2.x源码解析(回调篇)

    jQuery2.x源码解析(构建篇) jQuery2.x源码解析(设计篇) jQuery2.x源码解析(回调篇) jQuery2.x源码解析(缓存篇) 通过艾伦的博客,我们能看出,jQuery的pro ...

  4. 转:入门Webpack,看这篇就够了

    写在前面的话 阅读本文之前,先看下面这个webpack的配置文件,如果每一项你都懂,那本文能带给你的收获也许就比较有限,你可以快速浏览或直接跳过:如果你和十天前的我一样,对很多选项存在着疑惑,那花一段 ...

  5. 前端试题本(Javascript篇)

    JS1. 下面这个JS程序的输出是什么:JS2.下面的JS程序输出是什么:JS3.页面有一个按钮button id为 button1,通过原生的js如何禁用?JS4.页面有一个按钮button id为 ...

  6. 细说ES7 JavaScript Decorators

    开篇概述 在上篇的ES7之Decorators实现AOP示例中,我们预先体验了ES7的Decorators,虽然它只是一个简单的日志AOP拦截Demo.但它也足以让我们体会到ES7 Decorator ...

  7. ES7之Decorators实现AOP示例

    在上篇博文CoffeeScript实现Python装潢器中,笔者利用CoffeeScript支持的高阶函数,以及方法调用可省略括符的特性,实现了一个类似Python装潢器的日志Demo.这只是一种伪实 ...

  8. 入门Webpack,看这篇就够了

    来源于:http://www.jianshu.com/p/42e11515c10f 写在前面的话 阅读本文之前,先看下面这个webpack的配置文件,如果每一项你都懂,那本文能带给你的收获也许就比较有 ...

  9. React和ES6(二)ES6的类和ES7的property initializer

    React与ES6系列: React与ES6(一)开篇介绍 React和ES6(二)ES6的类和ES7的property initializer React与ES6(三)ES6类和方法绑定 React ...

  10. 翻阅《数据结构与算法javascript描述》--数组篇

    导读: 这篇文章比较长,介绍了数组常见的操作方法以及一些注意事项,最后还有几道经典的练习题(面试题). 数组的定义: JavaScript 中的数组是一种特殊的对象,用来表示偏移量的索引是该对象的属性 ...

随机推荐

  1. HashMap问题

    package com.google; import javax.lang.model.element.NestingKind; import java.util.HashMap; public cl ...

  2. Jenkins+Docker 实现一键自动化部署项目!

    博主分享的非常好:https://mp.weixin.qq.com/s/a0JOuiqLsUMcQSEjZ4uGTg 本文章实现最简单全面的Jenkins+docker+springboot 一键自动 ...

  3. 使用FormData上传图片

    document.querySelector('.file').addEventListener('change', function(e) { //1.可以通过this拿到这个file的DOM元素 ...

  4. c# reflect里面的getValue()参数

    Type ty = t.GetType(); PropertyInfo[] PropertyInfo = ty.GetProperties(); string Typename = typeof(T) ...

  5. 读后笔记 -- Java核心技术(第11版 卷 II) Chapter5 数据库编程

    5.1 JDBC API 1. JDBC (Java Database Connectivity) is an API for interacting with a database in Java. ...

  6. jmeter压测dubbo接口,参数为dto时如何写传参及有错误时的分析思路

    一.传参 1. 无论dubbo接口传参是否为dto,所有参数都是在args的tab传进去的. 2. 如果dto中有自定义对象,paramType为自定义dto名,paramValue为其他参数组成的j ...

  7. C CODE STYLE 每天瞅一两眼

    阅读进度:只读到了swich 转载于:https://users.ece.cmu.edu/~eno/coding/CCodingStandard.html C Coding Standard C Co ...

  8. JiaoZiVideoPlayer模拟用户点击,切换播放引擎!~

    默认播放及模拟用户点击播放按钮 jzvideoPlayerStandard.startButton.performClick() 切换播放引擎及使用Ijkplayer JZVideoPlayer.se ...

  9. 我和Java这些年的故事(六)

    从2006年开始,我就在建设自己的网站,从2008年到2011年,我托管了四年自己的服务器,那时阿里云还没有兴起,只能自己买服务器,放到托管商机房里去,他们给你一个IP.机器全部是自己运维. IBM内 ...

  10. 完全使用vscode开发python

    完全使用vscode开发python 作为Python开发,以前一直使用Pycharm社区版,因为卡顿,尝试使用vscode替换,尝试后并在工作中使用了半个月觉得真香,所以分享给大家. 更详细的视频介 ...