ES12 是 JavaScript 的最新版本,也被称为 ECMAScript 2021。相比于前一个版本 ES11,ES12 引入了很多新的功能和特性,可以帮助开发者更好地写出高效、简洁并且能够克服常见的 JavaScript 误区的代码。
1. 模板字面量
在 ES12 之前,我们在编写字符串时通常使用单引号或双引号并用加号连接字符串,比如:
let firstName = "John"; let lastName = "Doe"; let fullName = firstName + " " + lastName;
但这种方式并不方便,尤其是在需要长字符串或者字符串中包含变量时。ES12 版本引入了模板字面量的概念,可以直接在字符串中添加变量,而且字符串可以跨行写,代码更加简洁美观:
let firstName = "John"; let lastName = "Doe"; let fullName = `${firstName} ${lastName}`;
2. Nullish 合并运算符
在 JavaScript 中,||
运算符经常被用来判断变量是否存在。但是如果变量的值为 0
或者 false
,那么它就是存在的,这时候可能会引起一些逻辑错误:
let falseValue = false; let trueValue = true; console.log(falseValue || "hello"); // 输出 hello console.log(trueValue || "world"); // 输出 true
可以看到,在第一个例子中,falseValue
的值为 false
,但是由于 ||
运算符的特性,它判断为不存在,因此输出了 "hello"
。这时候,如果我们希望 false
或者 0
也被视作存在的值,就需要使用 ES12 引入的 Nullish 合并运算符:
let falseValue = false; let trueValue = true; console.log(falseValue ?? "hello"); // 输出 false console.log(trueValue ?? "world"); // 输出 true
这里的 ??
表示如果变量的值为 null
或 undefined
才会返回默认值,否则返回变量的值。
3. Promise.allSettled 方法
在 JavaScript 中,Promise 是一种非常常用的异步编程工具,它可以解决一些复杂的异步场景。但是 Promise 也有很多局限,比如不能同时执行多个 Promise 并监听他们的所有状态。ES12 引入了 Promise.allSettled 方法,允许同时处理多个 Promise 并且监听每个 Promise 的状态。
下面是一个例子,我们有一个函数要执行三个异步操作,我们可以使用 Promise.allSettled 来监听所有异步操作的状态:
-- -------------------- ---- ------- ----- -------- - ------------------- ----- -------- - ------------------------ ----- -------- - --- ----------------- -- ------------------- ----- ------ -- ----------------------------- --------- ------------------------- -- - --------------------- ---
输出结果为:
[ { "status": "fulfilled", "value": 1 }, { "status": "rejected", "reason": "Error" }, { "status": "fulfilled", "value": "foo" } ]
4. 数组新增方法
ES12 还引入了一些数组的新方法,比如 Array.prototype.flatMap
、Array.prototype.at
和 Array.prototype.filter
等。这些方法不仅可以节省代码量,而且让数组操作更加方便和高效。
下面是一个使用 Array.prototype.flatMap
方法的例子:
let arr = [1, 2, 3, 4, 5]; let newArr = arr.flatMap((x) => [x, x * 2]); console.log(newArr); // 输出 [1, 2, 2, 4, 3, 6, 4, 8, 5, 10]
这里的 flatMap
方法会先对数组中的每个元素执行一个函数,然后将结果打平成一个数组返回。在这个例子中,对每个元素分别执行了 [x, x * 2]
函数,返回的结果被打平成了一个新的数组。
总结
ES12 引入了很多新的功能和特性,可以帮助开发者更好地写出高效、简洁并且能够克服常见的 JavaScript 误区的代码。掌握这些新的特性可以提高代码的质量和效率,也能让开发者更加轻松愉快地编写代码。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/646547b1968c7c53b0601a1b