ECMAScript是JavaScript的规范,它每年都会发布新的版本。ES8是2017年发布的版本,新版本包括了一些语法上的新特性,也包括了一些原生API的新增和优化。本文将介绍一些ES8的新特性和优化。
字符串填充方法
在ES8中,新增了两个字符串方法:padStart()
和padEnd()
。这两个方法可以在原有字符串的前面或后面填充新字符串,以达到指定长度的效果。
padStart()
方法用于在字符串头部填充字符,通常用于补全数字、日期的位数。比如:
const num = '20'; const paddedNum = num.padStart(4, '0'); console.log(paddedNum); // "0020"
padEnd()
方法与padStart()
方法类似,但是是在字符串尾部填充内容。比如:
const str = 'hello'; const paddedStr = str.padEnd(10, '!'); console.log(paddedStr); // "hello!!!!"
异步迭代器
在ES8中,可以使用异步迭代器来遍历异步数据结构。迭代器是ES6提供的一种遍历数据结构的方法,异步迭代器则可以异步地迭代数据结构。这在异步编程中非常有用。
假设我们有一个异步生成器函数,可以使用for-await-of
循环遍历它的结果。
-- -------------------- ---- ------- ----- --------- ------------------ - ----- -- ----- -- ----- -- - ------ ---------- - --- ----- ------ ----- -- ------------------- - ------------------- - -----
正则表达式 named capture groups
在ES8中,正则表达式支持了命名捕获组,可以让我们在匹配时给捕获到的分组取一个名称。
const re = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/; const result = re.exec('2021-01-01'); console.log(result.groups.year); // "2021" console.log(result.groups.month); // "01" console.log(result.groups.day); // "01"
Object.values/Object.entries
在ES8中,新增了Object.values()
和Object.entries()
方法,方便我们操作对象的数据。
Object.values()
方法可以返回一个对象中所有的属性值组成的数组,比如:
const obj = { a: 1, b: 2, c: 3 }; const values = Object.values(obj); console.log(values); // [1, 2, 3]
Object.entries()
方法可以返回一个对象中每个属性和值组成的数组,比如:
const obj = { a: 1, b: 2, c: 3 }; const entries = Object.entries(obj); console.log(entries); // [["a", 1], ["b", 2], ["c", 3]]
这些方法的实现可以使用for...in
循环结合hasOwnProperty()
方法,但是Object.values()
和Object.entries()
方法更加简洁明了。
函数参数列表和调用
在ES8中,函数的参数列表和调用方式也有一些变化。
可以使用...
语法将所有参数组合成一个数组,方便我们进行操作。比如:
function printAll(...items) { console.log(items.join(', ')); } printAll('a', 'b', 'c'); // "a, b, c"
此外,在函数调用时也可以使用...
语法将一个数组展开为多个参数,比如:
function add(a, b, c) { return a + b + c; } const arr = [1, 2, 3]; const sum = add(...arr); // 6
Object.getOwnPropertyDescriptors
在ES8中,新增了Object.getOwnPropertyDescriptors()
方法,可以获取一个对象的所有属性描述符(包括设置值、获取值、可枚举性、可配置性、可写性等)。
-- -------------------- ---- ------- ----- --- - - ----- ------ ---- --- --- ---------- - ------ ------------- --------------- - -- ----- ----------- - -------------------------------------- -------------------------
总结
ECMAScript 2017 (ES8)是JavaScript一次比较小的迭代,但是新增的特性和优化都非常实用,特别是字符串填充方法padStart()
和padEnd()
,以及异步迭代器和正则表达式的命名捕获组等。我们应该熟练掌握这些特性和优化,把它们应用到我们的代码中,提高代码的效率和可读性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64754c7a968c7c53b02629b8