「这是我参与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知识点总结
往期文章 👇👇👇