Backend 언어/JS&TS

2021 ECMAScript (ES12) 신규 변경점

민초부 2021. 9. 9. 19:25
반응형

2021년 JS 신규 기능으로 그렇게 크게 변경된 점은 없고 크게 4가지만 기억하면 될 듯하다.

 

1. replaceAll 기능 추가 

    > 기존에 replace() function은 첫번째 글자만 치환하였고 전부 바꾸려면 정규식을 사용하거나 그렇게 처리를 했어야했다. 

    > 이에 대해서 이제 replaceAll()을 사용하면 전부 바꿔주는 신규 함수가 생겼다. 

const testString = "test is just test"

const resultReplace = testString.replace("test", "dev")
const resultReplaceAll = testString.replaceAll("test", "dev")

console.log(resultReplace) // dev is just test
console.log(resultReplaceAll) // dev is just dev

2. Numeric separators

    > 큰단위 숫자를 더 쉽게 인식하기 위해 천단위 콤마같은 역할을 하는 기능이다 (_로 처리하면 된다.)

const bigNumber = 1029349202

const newBigNumber= 1_029_349_202

3. Logical assignment operator (||=, &&=, ??= 추가)

    > +=와 같은 nullish coalescing, 할당 연산자임 

'' || 'sunup1992'; // 'sunup1992';
'' ?? 'sunup1992'; // ''
null || 'sunup1992'; // 'sunup1992'
null ?? 'sunup1992'; // 'sunup1992' 
false ?? 'sunup1992'; // false

a &&= b // a = a && b
a ||= b // a = a || b
a ??= b // a = a ?? b


let user = await Users.findOne({where: {id : userId}});

////////기존/////////
let defaultName = "noUser"

if (!user) {
	user = defaultName
}

///////2021//////////
user ??= "noUser"

4. Promise.any 

   > 기존 Promise.all은 그 안의 함수들이 전부 resolve 되기를 기다린다면 이건 먼저 resolve되는게 있으면 바로 끝낸다. 

 

const A = new Promise((resolve, reject) => {
	setTimeout(() => resolve("A resolved"), 500);
})
const B = new Promise((resolve, reject) => {
	setTimeout(() => resolve("B resolved"), 2000);
})

const resolvedPromises = async () => {
	const resolved = await Promise.any([A,B])
    console.log("One of promise resolved faster : ", resolved);
}
// 이렇게 하면 One of promise resolved faster : A resolved 가 찍힌다

 

반응형