본문 바로가기
FRONTEND/Javascript

ES2021 새로운 문법

by 또야또야 2021. 6. 28.
반응형

ES2021 Features

논리 할당 연산자 - Logical Assignment Operators

  // Or Or Equal
  x ||= y
  x || (x = y)

  // And And Equals
  x &&= y
  x && (x = y)

  // QQ Eqauls
  x ??= y
  x ?? (x = y)
  // 사용 예제 - 모두 동일한 구문입니다

  if (!user.id) user.id = 1

  user.id = user.id || 1

  user.id ||= 1
  function setOpts (opts) {
    opts.cat ??= 'meow'
    opts.doc ??= 'bow'
  }
  setOpts({ cat: 'meow' })

숫자 분리 - Numeric Seperators

  1_000_000_000          // 10 억
  101_475_938.38         // 수 억

  let fee = 123_00        // $123 (12300 cents)
  let fee = 12_300        // $12,300 (fee)
  let amount = 12345_00   // 12,345 (1234500 cents)
  let amount = 123_4500   // 123.45 (4-fixed financial)
  let amount = 1_234_500  // 1,234,500
  0.000_001     // 1 millionth
  1e10_000      // 10^1000 -- granted, far less useful / in-range
  0xA0_B0_C0

Promise.any 와 AggregateError

  Promise.any([
    fetch('https://v8.dev').then(() => 'home'),
    fetch('https://v8.dev/blog').then(() => 'blog'),
    fetch('https://v8.dev/docs').then(() => 'docs')
  ])
  .then((first) => {
    // Promise 중 어떤것이든 수행되는 경우
    console.log(first) // home
  })
  .catch((error) => {
    // 모든 Promise 가 다 rejected 된 경우 ==> AggregateError
    console.log(error)
  })

String.prototype.replaceAll

  const x = 'x'
  const xxx = 'xxx'

  x.replace('', '_')    // '_x'
  xxx.replace(/(?:)/g, '_')    // '_x_x_x_'
  xxx.replaceAll('', '_')    // '_x_x_x_'

WeakRefs 와 FinializationRegistry Objects

  let target = {}
  let wr = new WeakRef(target)

  // wr 과 target 은 같지 않습니다!

  const registry = new FinailizationRegistry(heldValue => {
    // ...
  })

  registry.register(myObject, 'some value', myObject)

  // some time later, if you don't care about `myObject` anymore...
  registry.unregister(myObject)
반응형

'FRONTEND > Javascript' 카테고리의 다른 글

210708_Virtual DOM 이 빠른 이유  (0) 2021.07.08
210628 Javascript Optional Chanining 활용  (0) 2021.06.28
210425_Jest 사용법  (0) 2021.05.28
Map, WeakMap, Set, WeakSet  (0) 2021.05.09
bundle size 와 Javascript Performance  (0) 2021.03.03

댓글