ES7和ES8常用知识点总结

387 阅读3分钟

「这是我参与2022首次更文挑战的第4天,活动详情查看:2022首次更文挑战」。

大家好,我是L同学,最近在学习ES6-ES12的内容,所以对其中的常用知识点进行总结。本文主要总结了ES7和ES8的相关内容。

ES7

数组includes方法

在ES7之前,我们想要判断数组是否包含某个元素,可以使用数组的indexOf方法,如果返回的值不等于-1,则说明数组包含这个元素。

const names = ['abc', 'cba', 'nba', 'mba', NaN]

if(names.indexOf('cba') !== -1) {
  console.log('包含cba元素');
}

if(names.indexOf(NaN) !== -1) {
  console.log('包含NaN');
}

但是indexOf不能判断数组中是否有NaN

在ES7中,新增了数组的includes方法,我们可以判断数组中是否包含某个元素,并且可以传入索引值,要求从第几个元素开始进行判断。如果包含则返回true,不包含则返回false。另外,可以判断数组中是否包含NaN

if(names.includes('cba', 2)) {
  console.log('包含cba元素');
}

if(names.includes(NaN)) {
  console.log('包含NaN');
}

指数运算符**

在ES7之前,想要进行指数运算,我们可以通过Math.pow方法来获取结果。

在ES7中,新增了指数运算符**,同样可以进行指数运算。

const result = Math.pow(3, 3)

const result1 = 3 ** 3

console.log(result, result1); // 27 27

ES8

Object.values(obj)

我们通常使用Object.keys(obj)来获取对象中的所有key值,那么同样在ES8中,我们可以通过Object.vaules(obj)来获取对象中的所有value值

const obj = {
  name: 'haha',
  age: 18
}

console.log(Object.keys(obj)); // [ 'name', 'age' ]
console.log(Object.values(obj)); // [ 'haha', 18 ]

另外我们还可以传入数组或者字符串,传入数组返回的还是相同的数组,传入字符串返回的是包含一个个字符的数组。

console.log(Object.values(['abc', 'cba', 'nba'])); // [ 'abc', 'cba', 'nba' ]
console.log(Object.values('abc')); // [ 'a', 'b', 'c' ]

Object.entries(obj)

在ES8中新增了Object.entries(obj),结果返回的是一个数组,数组中包含了可枚举属性的键值对数组

const obj = {
  name: 'haha',
  age: 18
}

console.log(Object.entries(obj)); // [ [ 'name', 'haha' ], [ 'age', 18 ] ]

同样,我们可以传入数组和字符串👇。

console.log(Object.entries(['abc', 'cba', 'nba'])); // [ [ '0', 'abc' ], [ '1', 'cba' ], [ '2', 'nba' ] ]
console.log(Object.entries('abc')); // [ [ '0', 'a' ], [ '1', 'b' ], [ '2', 'c' ] ]

String.padStart和padEnd方法

在ES8中,新增了padStart和padEnd方法,如果我们想要在字符串的首尾填充特定字符,可以使用这两个方法。可以传入两个参数,第一个参数是获取到的最终字符串的长度,第二个参数是要填充的字符。

const message = 'hello world'
const newMessage = message.padStart(13, '*').padEnd(15, "-")
console.log(newMessage); // **hello world--

应用场景

举一个它们的使用场景吧。有时候,我们会处理用户的敏感信息,例如身份证、银行卡信息,这就要求我们保留最后4位数字,其余数字使用*进行填充。

const cardNumber = '2348326473647871234'
const lastFourCard = cardNumber.slice(-4)
const finalCard = lastFourCard.padStart(cardNumber.length, '*')
console.log(finalCard); // ***************1234

Trailing Commas

在ES8中,可以在函数定义和调用时多加一个逗号。

function foo(m, n,) {
  console.log(m, n);
}
foo(10, 20,)

async和await

在ES8中,新增了async和await使用,使用方法详见async和await知识点总结

往期文章 👇👇👇

ES6常用知识点总结(三)

ES6常用知识点总结(二)

ES6常用知识点总结(一)

一个刚入职的前端程序媛的2021年终总结