ES11 (也被称为 ES2020) 是 ECMAScript (即 JavaScript) 的最新版本,已经被发布了。它包含了许多新的特性和修复了一些历史性的问题。在这篇文章中,我们将详细探讨 ES11 的新特性、修复的问题以及相关的学习资源。
新特性
可选链 (Optional Chaining)
这个新特性可以让开发者在访问深层嵌套对象时,不必进行繁琐的检查,从而显著降低代码的冗余和繁杂度。以下是一个示例代码:
-- -------------------- ---- ------- ----- ---- - - ----- ------- -------- - ----- ---- ------ -------- -------- - -- ----- ------ - ---------------------- -------------------- -- ---------
我们可以看到,如果 address
或 street
不存在,我们的代码不会出错,返回结果会直接是 undefined
。
空值合并操作符 (Nullish Coalescing Operator)
我们经常需要设置默认值,来规避因为某些变量或对象不确定造成的错误。同样的代码可能会出现如下两种写法:
const defaultValue = something || defaultVal;
或
const defaultValue = something ?? defaultVal;
在原来的写法中,something
必须是一个真值才会进入后面的操作。而使用新的空值合并操作符,只有当 something
是 null
或 undefined
时才会使用默认值。这样就能规避因为空值而带来的限制,不会因为 something
不是一个真值而原因照成问题。
动态 Import
ES11 允许我们在运行时动态导入模块,这是一个巨大的改进。如下是示例代码:
const module = await import('path/to/module.js');
使用这种新特性可以让我们在需要时才加载组件,可以更加有效地提高整个系统的性能。
修复的问题
Promise.allSettled()
在 ES10 之前,Promise.all()
的缺陷使得当 Promise 数组有一个 Promise 被 rejected 的时候,所有 Promise 的处理就会中断,这给很多开发者造成了困扰。
ES11 新引入的 Promise.allSettled()
方法可以让我们继续对所有 Promise 进行处理,而不会造成处理的中断,这样就可以避免出现不可预测的问题。
可让 catch() method 接受 null and undefined 参数
在 ES10 之前,Promise 的 catch() 方法只能接收字符串作为参数,如果传入非字符串类型的参数,就会抛出错误。
ES11 新特性 catch()
方法可以接受任何类型的信息,包括 null
和 undefined
,这样就能使我们的代码更加清晰优美。
学习资源
如何学习 ES11?
教程
这里也有一些推荐教程:
社区资源
以下是一些社区资源:
实践输入
最好的学习方法是持续练习和探索,如果没有任何项目来进行实践训练,您可以为开源项目做贡献。以下是一些开源项目:
结论
ES11 带来了新的特性和解决了之前的问题,这样可以使我们的代码更加优雅和简明。现在的重点是开始学习和尝试这些新的特性,这样就可以更好的在日常的开发工作中使用这些新特性,从而提高我们的工作效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67174490ad1e889fe220938c