ECMAScript(简称ES)是一种由Ecma国际组织标准化的脚本语言,其最新版本为ECMAScript 2019。本篇文章将讲解ECMAScript 2019中的一些新特性,这些特性可以有效提高JavaScript开发效率。
集合类型扩展
Array.prototype.{flat, flatMap}
Array.prototype.flat和Array.prototype.flatMap方法可以方便地操作嵌套的数组,之前使用的方法是通过递归或递归函数来展开数组,但是这两个方法可以更灵活和方便地处理多层嵌套数组。
Array.prototype.flat(depth)
该方法可以将嵌套的数组展平到指定的深度depth(默认值为1)。如果depth小于等于0,则不会发生任何操作。如果depth为Infinity,则会展平所有嵌套的数组。
const arr = [1, 2, [3, 4], [[5, 6, [7, 8]], [9]]]; const flattened = arr.flat(2); console.log(flattened); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
Array.prototype.flatMap(callback[, thisArg])
该方法首先映射每个元素,然后将结果展平为一个新数组。与Array.prototype.map不同,它返回的并不是嵌套的数组,而是展平后的数组。
const arr = ["hello world", "you are a developer", "no pain no gain"]; const words = arr.flatMap(word => word.split(" ")); console.log(words); // ["hello", "world", "you", "are", "a", "developer", "no", "pain", "no", "gain"]
Object.fromEntries
Object.fromEntries方法是Object.entries()的反向操作。该方法将一个键值对列表转换为一个对象。感谢这个函数,我们可以非常方便地将Array.prototype.entries()的结果转换为一个对象。
const entries = [ ["a", 1], ["b", 2], ["c", 3] ]; const obj = Object.fromEntries(entries); console.log(obj); // { a: 1, b: 2, c: 3 }
String.prototype.{trimStart, trimEnd}
String.prototype.trim()方法用于删除字符串两端的空白字符。如果您想要删除字符串开头或结尾的特定字符,则可以使用String.prototype.trimStart()和String.prototype.trimEnd()方法。
const str = " hello world "; console.log(str.trim()); // "hello world" console.log(str.trimStart()); // "hello world " console.log(str.trimEnd()); // " hello world"
其他扩展
Array#sort
2020年3月,Chrome和Node.js以及其他一些大型JavaScript运行时的开发者已经开始采用改进后的稳定排序算法(即TimSort算法),这会更加稳定和快速。
Promise.prototype.finally
Promise.prototype.finally()是一个非常实用的方法,其在promise结束后,无论它的状态如何(完成/拒绝),都会被调用。Promise.prototype.then()和Promise.prototype.catch()返回一个新的promise对象,但Promise.prototype.finally()并不返回一个新的promise。
somePromiseMethodReturningPromise() .then(doTheNextTask) .catch(handleError) // if above any rejects .finally(finishTheTask);
非数组的Spread运算符
剩余和展开操作符(rest和spread)之前只能用于数组。现在ECMAScript 2019支持非数组的Spread运算符,包括对象和字符串。
-- -------------------- ---- ------- ----- ------ - - ----- -------- ---- --- ----- ---- ----- -- ----- - ---- --------- - - ------- ----------------- -- -- -------------------- -- ------ -------- ----- ---- ------ ----- --- - ----- ---- ----- ----- --- - ------ ------- -------------------- --------- -- ----- ---- ---- ---- ---- ---- ---- ---- - -- ---- ---- ---- ---- ----
总结
我们已经了解了ECMAScript 2019中一些最重要的特性,包括Array.prototype.{flat, flatMap}、Object.fromEntries、String.prototype.{trimStart, trimEnd}、Array#sort、Promise.prototype.finally、非数组的Spread运算符等。这些新特性可以帮助我们使代码更快、更方便。
虽然这些新特性的用法非常简单,但它们确实能够提高JavaScript开发的效率和可读性。学习和使用这些新特性可以让您更快地完成任务,并且避免一些普遍的错误和陷阱。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64ed49f1f6b2d6eab376e935