简介
ECMAScript 是一种由 Ecma 国际组织标准化的脚本语言,它被广泛应用于 Web 开发中。随着技术的发展,ECMAScript 的版本也不断更新,新增了许多重要的功能。本文将介绍 ES10 和 ECMAScript 2019 中新增的功能,并提供详细的说明和示例代码,希望可以为前端开发者提供帮助。
可选链运算符
可选链运算符是 ES10 中最重要的新特性之一。在之前的版本中,开发者经常需要通过繁琐的 if 判断来避免 undefined 或 null 值的错误。
例如,在查找一个对象的某个属性时,我们经常需要这样写:
if (obj && obj.prop1 && obj.prop1.prop2) { // do something }
可选链运算符 ?.
可以简化这段代码:
if (obj?.prop1?.prop2) { // do something }
当 obj 或 prop1 不存在时,?.
不会报错,而是直接返回 undefined
。
nullish 合并运算符
nullish 合并运算符 ??
是另一个重要的新特性。它可以用来在某些变量为 null 或 undefined 时,提供默认值。
例如,在给变量赋值时,我们经常需要写这样的代码:
let foo = bar !== null && bar !== undefined ? bar : 'defaultValue';
使用 nullish 合并运算符,可以简化这段代码:
let foo = bar ?? 'defaultValue';
当 bar 为 null 或 undefined 时,??
会返回其右侧的默认值,否则返回 bar 的值。
Promise 的 finally 方法
Promise 的 finally 方法也是 ES10 中新增的新特性之一。它可以在 Promise 执行后,无论是 resolve 还是 reject,都会执行指定的回调函数。
例如:
-- -------------------- ---- ------- --------------------------------- -------------- -- - -- ------ ---------- -------- -- ------------ -- - -- ------ ----- -- ----------- -- - -- -- --------- ------- ------- -- ------- ---
在这个例子中,无论 fetch 请求成功还是失败,finally 方法都会被执行。这个特性可以让开发者在 Promise 执行后进行必要的清理工作。
Array 的 flat 和 flatMap 方法
ES10 还新增了 Array 的 flat 和 flatMap 方法,可以用来操作嵌套的数组结构。
flat 可以用来将嵌套的数组结构“打平”,返回一个新的一维数组。例如:
let arr = [1, [2, 3], [4, [5, 6]]]; let flatArr = arr.flat(); // flatArr: [1, 2, 3, 4, [5, 6]]
flat 方法可以接受一个参数,表示要“打平”的层数。默认为 1。
flatMap 方法则可以对数组中的每个元素进行映射,结果再通过 flat 方法“打平”成一维数组。例如:
let arr = [1, 2, 3]; let flatMapArr = arr.flatMap(x => [x * 2]); // flatMapArr: [2, 4, 6]
字符串的 trimStart 和 trimEnd 方法
字符串的 trimStart 和 trimEnd 方法可以分别用来去除字符串开头和结尾的空白字符。
例如:
let str = ' example string '; let trimmedStr = str.trimStart().trimEnd(); // trimmedStr: 'example string'
Object 的 fromEntries 方法
Object 的 fromEntries 方法可以将由键值对组成的数组,转换为一个对象。
例如:
let entries = [['foo', 1], ['bar', 2]]; let obj = Object.fromEntries(entries); // obj: {foo: 1, bar: 2}
该方法可以用来将 URLSearchParams 转换为一个对象,或将一个对象转换为一个数组。
数组和对象的扩展运算符
ES2018 引入了数组和对象的扩展运算符,可以用来将一个数组或对象“打散”成多个元素。
例如:
-- -------------------- ---- ------- --- ---- - --- -- --- --- ---- - --- --- --- ------ - --------- --------- -- ------- --- -- -- -- -- --- ---- - - ---- -- ---- - -- --- ---- - - ---- - -- --- ------ - - -------- ------- -- -- ------- ----- -- ---- -- ---- --
这个特性可以用来在函数调用时,将对象的属性“打散”成函数的参数。
结论
本文介绍了 ES10 和 ECMAScript 2019 中新增的一些重要功能,包括可选链运算符、nullish 合并运算符、Promise 的 finally 方法、Array 的 flat 和 flatMap 方法、字符串的 trimStart 和 trimEnd 方法、Object 的 fromEntries 方法,以及数组和对象的扩展运算符。这些新特性可以使开发者编写更简洁、更易读、更高效的代码,并提高生产力。如果你还没有深入了解这些新特性,现在就是个好时机。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66f6f660c5c563ced58d8807