现代 JavaScript 实用语法:ES11 + 实战总结

· 约 5 分钟读完

随着前端技术的不断发展,JavaScript 也在不断更新迭代。ES11(也称为 ECMAScript 2020)是 JavaScript 的最新版本,它带来了很多新的语法和功能,使得我们能够更加高效地编写代码。

在本篇文章中,我们将详细介绍 ES11 的实用语法和实战经验,帮助读者更好地掌握现代 JavaScript 的技术。

可选链操作符(Optional chaining)

在以前的 JavaScript 版本中,当我们需要访问一个对象的属性或方法时,通常需要使用多个点符号(.)来进行链式调用,例如:

但是,如果其中某个属性不存在,就会抛出一个错误。为了避免这种情况,我们通常需要使用短路运算符 && 来进行判断,例如:

这样虽然可以避免错误,但代码看起来比较冗长。ES11 引入了可选链操作符 ?.,可以更加简洁地实现上述代码,例如:

如果 user 或 address 中的任意一个属性不存在,street 变量将会被赋值为 undefined。

空值合并操作符(Nullish coalescing)

在 JavaScript 中,|| 运算符通常用于给变量赋默认值。例如:

但是,如果 username 的值为 0、''、false 或者 null,上述代码将会出现问题,因为它们都被视为 falsy 值。ES11 引入了空值合并操作符 ??,可以更加精确地进行判断,例如:

只有当 username 的值为 null 或 undefined 时,name 才会被赋值为 'Unknown'。

Promise.allSettled()

在以前的 JavaScript 版本中,Promise.all() 方法可以将多个 Promise 对象封装成一个新的 Promise 对象,并在所有 Promise 对象都成功时返回一个包含所有结果的数组。但是,如果其中一个 Promise 对象失败了,整个 Promise 对象将会被拒绝。

ES11 引入了 Promise.allSettled() 方法,可以在所有 Promise 对象都完成时返回一个包含所有结果的数组,不管它们成功还是失败。例如:

String.prototype.matchAll()

在以前的 JavaScript 版本中,String.prototype.match() 方法可以在字符串中搜索匹配某个正则表达式的子字符串,并返回一个包含所有匹配结果的数组。但是,它只能返回第一个匹配结果,如果需要获取所有匹配结果,就需要使用循环来重复调用。

ES11 引入了 String.prototype.matchAll() 方法,可以一次性获取所有匹配结果。例如:

其他实用语法和实战经验

除了上述语法外,ES11 还引入了很多其他实用的语法和功能,例如:

  • 可以使用 BigInt 类型来处理超出 Number 类型范围的整数;
  • 可以使用 globalThis 全局对象来访问全局作用域中的变量和函数,不再需要使用 window 或 self;
  • 可以使用 import() 函数动态导入模块,可以更加灵活地进行模块化开发;
  • 可以使用 for-in 和 for-of 循环遍历对象和数组,比传统的 for 循环更加简洁。

总之,ES11 带来了很多实用的语法和功能,可以让我们更加高效地编写 JavaScript 代码。在实际开发中,我们应该根据具体需求选择合适的语法和功能,以提高代码质量和开发效率。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d0f43ea941bf713420f0d9