ES2022 中的4个最重要的特性

ECMAScript 2022 是一项新的 JavaScript 标准,将于 2022 年 6 月发布。

1. 数组中的at()方法

ES2022将为我们提供一种可能性,即从末端索引类似数组的对象。这是一个很小的功能,但它提高了处理数组或字符串时的核心可读性。

At()方法中的正数与[]索引的作用相同,但如果是负数,则允许从末尾访问数值。

原来:

const arr = [1,2,3,4]
arr[arr.length - 2] // 3
arr.slice(-2)[0]    // 3

const str = “1234”
str[str.length - 2] // ‘3’
str.slice(-2)[0]    // ‘3’

新的at()方法:

const arr = [1,2,3,4]
arr.at(-2) // 3

const str = “1234”
str.at(-2) // ‘3’

2. 错误原因

.cause对象上的.cause属性将允许我们指定哪个错误导致其他错误。非常不言而喻吧?在这里你可以看到这个新功能的一个使用例子。

try {
  doSomeComputationThatThrowAnError() 
} catch (error) {
  throw new Error('I am the result of another error', { cause: error })
}

错误原因将是一个完美的方法,可以将错误连在一起,这在其他编程语言如Java中是可能的。

3. 顶层的await

你知道你不能在函数之外的代码中直接使用await吗?如果不知道,那么这对你来说不是什么大问题。但对于其他人来说–不必担心,因为ES2022将改变这一点。

  • 它允许动态地加载模块
const serviceName = await fetch("https://example.com/what-service-should-i-use")
const service = await import(`/services/${serviceName}.js`)

// OR

const params = new URLSearchParams(location.search);
const theme = params.get(‘theme’);
const stylingFunctions = await import(/styling-functions-${theme}.js);

  • 它允许有条件地渲染模块
const date = new Date()

if(date.getFullYear() === 2023) {
  await require(’/special-code-for-2023-year.js’)
}

4. 私有槽slot和方法

纯Javascript中的类从ES6开始就存在了,但与面向对象的语言相比,它们的开发程度要低很多。许多开发者使用Typescript来包含其中的一些功能,现在我们可以看到在纯Javascript类中被实现。

私有槽是其中之一。它们只不过是类的私有属性。ES2022将为我们提供创建它们的可能性,当我们试图在类之外访问它们时,会得到一个错误。私有方法也是如此。有趣的是,JS团队选择给他们前缀(这与JS的传统有关吗?)

class Human {
  name = "John";
  
  setName(name) {
    this.name = name;
  }
}

const human = new Human()
human.name = ‘Amy’  // ERROR!
human.setName(‘Amy’) // OK

私有方法:

class Human {
  name = "John";
  
  constructor(name) {
    this.setName('Amy') // OK
  }
  
  setName(name) {
    this.name = name;
  }
}

const human = new Human()
human.setName(‘Amy’) // ERROR!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值