ES2019中6个好用的功能

String.prototype.trimStart() 和 String.prototype.trimEnd()

第一个trimStart()将删除字符串开头的所有空格。第二个trimEnd()将删除字符串末尾的所有空格。

'JavaScript'.trimStart()
// Output:
//'JavaScript'




' JavaScript'.trimStart()
// Output:
//'JavaScript'




' JavaScript '.trimStart()
// Output:
//'JavaScript '




'JavaScript '.trimStart()
// Output:
//'JavaScript '




'JavaScript'.trimEnd()
// Output:
//'JavaScript'


' JavaScript'.trimEnd()
// Output:
//' JavaScript'


' JavaScript '.trimEnd()
// Output:
//' JavaScript'


'JavaScript '.trimEnd()
// Output:
//'JavaScript'

Function.prototype.toString()

toString()方法已经存在了一段时间。此方法的作用是使您可以输出函数的代码。ES2019的不同之处在于此方法如何处理注释和特殊字符(例如空格)。

过去,toString()方法删除了注释和空白。因此,该函数的输出版本可能看起来与原始代码不一样。ES2019的发行版将不再发生这种情况。从现在开始,toString()方法所返回的值将与原始值匹配,包括注释和特殊字符相同。

// Before ES2019:
function myFunc/* is this really a good name? */() {
  /* Now, what to do? */
}


myFunc.toString()
// Output:
// "function myFunc() {}"




// After ES2019:
function myFunc/* is this really a good name? */() {
  /* Now, what to do? */
}


myFunc.toString()
// Output:
// "function myFunc/* is this really a good name? */() {
//   /* Now, what to do? */
// }"

Array.prototype.flat() 和 Array.prototype.flatMap()

// 创建一个数组:
const myArray = ['JavaScript', ['C', 'C++', ['Assembly', ['Bytecode']]]]


// 数组展平:
let myFlatArray = myArray.flat(1)


// 输出:
console.log(myFlatArray)
// Output:
// [ 'JavaScript', 'C', 'C++', [ 'Assembly', [ 'Bytecode' ] ] ]


// 数组展平多层级的数组:
let myInfiniteFlatArray = myArray.flat(Infinity)


// 输出:
console.log(myInfiniteFlatArray)
// Output:
// [ 'JavaScript', 'C', 'C++', 'Assembly', 'Bytecode' ]

除了flat()方法之外,还有flatMap()方法。您可以将此方法视为的高级版本flat()。区别在于该flatMap()方法是flat()与map()方法结合使用。因此,在展平数组时,可以调用回调函数。

// 创建一个数组:
const myArray = ['One word', 'Two words', 'Three words']


// 空格分割字符串:
const myMappedWordArray = myArray.map(str => str.split(' '))


// 输出的是多维数组:
console.log(myMappedWordArray)
// Output:
// [ [ 'One', 'word' ], [ 'Two', 'words' ], [ 'Three', 'words' ] ]




// 使用 flatMap():
const myArray = ['One word', 'Two words', 'Three words']


// 先空格分割字符串后展平数组:
const myFlatWordArray = myArray.flatMap(str => str.split(' '))


// 输出的是一维数组:
console.log(myFlatWordArray)
// Output:
// [ 'One', 'word', 'Two', 'words', 'Three', 'words' ]

Object.fromEntries()

当您需要将某个对象转换为数组时,可以使用单个方法entries()来完成。但是,直到现在,还没有一种方法可以可以轻松地还原此方法。多亏了ES2019的功能,这将不再是一个问题。还原此方法可以使用fromEntries()方法。

// 创建一个数组:
const myArray = [['name', 'Joe'], ['age', 33], ['favoriteLanguage', 'JavaScript']]


// 将数组转换为对象:
const myObj = Object.fromEntries(myArray)


// 输出:
console.log(myObj)
// Output:
// {
//   name: 'Joe',
//   age: 33,
//   favoriteLanguage: 'JavaScript'
// }




// 创建一个map:
const myMap = new Map(
  [['name', 'Spike'], ['species', 'dog'], ['age', 3]]
)


// 将数组转换为对象:
const myObj = Object.fromEntries(myMap)


// 输出:
console.log(myObj)
// Output:
// {
//   name: 'Spike',
//   species: 'dog',
//   age: 3
// }

try...catch

以前,当您要使用时try...catch,还必须使用参数。即使没有使用它,您也必须将异常作为参数传递。ES2019带来的一个变化是它使此选项成为可选。如果您不想处理该异常,则可以使用不带参数的catch块。

// Before ES2019:
try {
  // Do something.
} catch (e) {
  // 没有使用参数,但是参数是必传的
}


// After ES2019:
try {
  // Do something.
} catch {
  // 不需要任何参数了
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值