ES6 / ES11 기능 정리
1. ES6란?
프론트엔드 개발자라면 모르면 안되는 기능들이 수두룩하다.
- ECMA라는 국제 기구에서 만든 표준문서인 ECMAScript(=ES)의 6번째 개정판 문서에 있는 표준 스펙을 말한다.
- 2015년에 출시된 ES6가 다른 ES 시리즈에 비해 가장 많이 불리는 이유는 이 때의 자바스크립트가 현재 대표적인 기능이 많이 탑재되었기 때문이다(화살표함수, const와 let 등).
- ES6 이전의 문법은 도태된 느낌이 강해서 ES6가 자바스크립트 표준의 느낌이 강하다고 개인적으로는 생각한다.
2. ES6 기능
1) Ternary Operator
- 조건이 true / false에 따라 분기처리 할 때 사용
조건 ? true일 때 코드 : false일 때 코드
2) Destructing
- 구조 분해 할당으로 불리며 변수를 선언함과 동시에 배열과 객체의 값들을 바로 할당할 수 있는 방법이다.
① 배열
const array = [1, 2, 3]
const [a, b, c] = array
// a, b, c는 각각 변수로서 a에는 1이 담기고 b에는 2가 담기고 c에는 3이 담김
② 객체
const object = {
name: "Choi",
age: 26,
gender: "male"
}
const {name, age, gender} = object
// name에는 "Choi"가 담기고 age는 26이 담기고 gender에는 "male"이 담긴다.
// name 변수를 선언함과 동시에 값이 할당된 것이다.
const {name: myName, age: myAge, gender: myGender} = object
// 물론 key의 이름에 종속되지 않고 변수명을 바꿔서 할당할 수도 있음
- 참고로 배열은 원하는 변수명으로 할당할 수 있으나 객체의 경우에는 일반적으로 key의 이름을 그대로 변수로 써야 한다.
- 물론 변수명을 바꿔서 할당할 수도 있다.
③ 함수
- 함수의 인자가 객체인 경우에도 파라미터에서 사용가능하다.
const param = {
name: "Choi",
age: "26",
gender: "male"
}
const getUserInfo = ({name, age, gender}) => {}
getUserInfo(param)
3) 화살표 함수
- 함수 작성법으로 한줄 코드 작성이 가능할 경우 깔끔한 함수 작성이 가능해서 좋더라
const function = (parameter1, parameter2) => {}
4) const let
- ES6 이전에 쓰던 변수 선언 타입인 var은 호이스팅, 블락 스코프 무시, 상수변수 개념 미존재 같은 안정성을 해치는 문제점을 해결하는 변수 타입이다.
- const는 상수, let은 변수의 역할을 한다.
5) Default Parameter
- 함수의 파라미터가 required가 아닌 optional인 경우 기본 값을 지정해줄 수 있다.
- 물론 인자로 기본 값과 다른 값을 넘겨주면 그 값을 참조한다.
const getUserInfo = (name, age, gender="male") => {}
getUserInfo("Choi", 26)
// gender는 male이 된다.
getUserInfo("Choi", 26, female)
// gender는 female이 된다.
6) Rest Parameter
- 파라미터가 너무 많은 함수인 경우 전체의 인자를 하나의 파라미터 배열로 받는 방법이다.
const getUserInfo = (...userInfo) => {
console.log(userInfo);
// ["Choi", 26, male, cool, nice, rich]
}
const getUserInfo=(name, age, ...userInfo)=>{
console.log(userInfo);
// [male, cool, nice, rich]
}
getUserInfo("Choi", 26, male, cool, nice, rich)
- 일부는 평범한 파라미터로 받고 싶다면 두 번째 함수처럼 작성하면 된다.
- 단, Rest Parameter는 무조건 파라미터의 마지막에 와야 한다.
7) 숏컷
- 객체에서 key와 value의 이름이 같은 경우 축약해서 쓸 수 있다.
const name = "Choi"
const age = 26
const gender = male
const userInfo={
name: name,
age: age,
gender: gender
}
를 축약해서
const userInfo={
name,
age,
gender
}
로 사용가능하다.
8) Spread Operator
- 배열이나 객체 안에 있는 내용들을 풀어서 나열한다는 뜻이다.
- 여러 배열을 풀어서 하나의 배열로 다시 합치는 기능을 할 때 많이 썼다(concat의 기능처럼).
- 그리고 배열을 복사할 때나 아이템을 추가할 때나 소파에서도 많은 경우에 활용됐다.
const array1 = [1, 2, 3]
const array2 = [4, 5, 6]
const newArray = [...array1, ...array2]
console.log(newArray)
// [1, 2, 3, 4, 5, 6]
9) 백틱 string
- 변수와 문자를 섞어 쓸 때 편리하게 작성할 수 있게 도와준다.
const name = "Choi"
const oldVer = "Hi" + name + "is here"
const newVer = `Hi ${name} is here
3. ES11
1) Optional Chaining
- 리액트에서 자주 활용하게 되는 기능이다.
- SPA의 특성상 유동적인 데이터를 담는 state를 활용하게 되니 렌더링 시 데이터 페칭의 시간동안 state가 비어 있는 경우 에러가 난다. 이 때 데이터를 불러와서 state에 담길 동안 에러를 띄우지 않고 기다려주는 용도로 활용했다.
- 객체에 주로 사용하는데 이 것의 값이 있나요? 있다면 이 걸 찾아주시고 이게 있다면 그 것이 이 값을 가지고 있다면 이렇게 해주세요
const data = {
userInfo: {
name: "Choi"
}
}
console.log(data?.userInfo?.name)
2) false를 판단하는 연산자
① || 연산자
- null, undefined, 0 , "", false 를 false로 인식한다.
② ?? 연산자
- 0과 ""을 제외하고 null, undefined, false를 false로 인식한다.
4. 기타
ES7 : async / await
콜백함수 저리가
5. 생각
- 나는 비교적 최근 자바스크립트를 배운 지라 이 기능들을 당연히 알고 있었는데 신기능에 속하는 편이라고 하더라.
- 정말,, 좋을 때 공부를 시작한거구나,, 라는 생각이 들 정도로 무엇하나 빼먹지 못할 정도로 지금 다 유용하게 사용하고 있는 기술들이다.
- 2015년이면 고3이었는데 내가 미성년자일 때 개발하시던 분들은 대체 어떤 싸움을 하고 계셨던 걸까..
Author And Source
이 문제에 관하여(ES6 / ES11 기능 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@db970406/ES6-ES11-기능-정리
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
프론트엔드 개발자라면 모르면 안되는 기능들이 수두룩하다.
1) Ternary Operator
- 조건이 true / false에 따라 분기처리 할 때 사용
조건 ? true일 때 코드 : false일 때 코드
2) Destructing
- 구조 분해 할당으로 불리며 변수를 선언함과 동시에 배열과 객체의 값들을 바로 할당할 수 있는 방법이다.
① 배열
const array = [1, 2, 3]
const [a, b, c] = array
// a, b, c는 각각 변수로서 a에는 1이 담기고 b에는 2가 담기고 c에는 3이 담김
② 객체
const object = {
name: "Choi",
age: 26,
gender: "male"
}
const {name, age, gender} = object
// name에는 "Choi"가 담기고 age는 26이 담기고 gender에는 "male"이 담긴다.
// name 변수를 선언함과 동시에 값이 할당된 것이다.
const {name: myName, age: myAge, gender: myGender} = object
// 물론 key의 이름에 종속되지 않고 변수명을 바꿔서 할당할 수도 있음
- 참고로 배열은 원하는 변수명으로 할당할 수 있으나 객체의 경우에는 일반적으로 key의 이름을 그대로 변수로 써야 한다.
- 물론 변수명을 바꿔서 할당할 수도 있다.
③ 함수
- 함수의 인자가 객체인 경우에도 파라미터에서 사용가능하다.
const param = {
name: "Choi",
age: "26",
gender: "male"
}
const getUserInfo = ({name, age, gender}) => {}
getUserInfo(param)
3) 화살표 함수
- 함수 작성법으로 한줄 코드 작성이 가능할 경우 깔끔한 함수 작성이 가능해서 좋더라
const function = (parameter1, parameter2) => {}
4) const let
- ES6 이전에 쓰던 변수 선언 타입인 var은 호이스팅, 블락 스코프 무시, 상수변수 개념 미존재 같은 안정성을 해치는 문제점을 해결하는 변수 타입이다.
- const는 상수, let은 변수의 역할을 한다.
5) Default Parameter
- 함수의 파라미터가 required가 아닌 optional인 경우 기본 값을 지정해줄 수 있다.
- 물론 인자로 기본 값과 다른 값을 넘겨주면 그 값을 참조한다.
const getUserInfo = (name, age, gender="male") => {}
getUserInfo("Choi", 26)
// gender는 male이 된다.
getUserInfo("Choi", 26, female)
// gender는 female이 된다.
6) Rest Parameter
- 파라미터가 너무 많은 함수인 경우 전체의 인자를 하나의 파라미터 배열로 받는 방법이다.
const getUserInfo = (...userInfo) => {
console.log(userInfo);
// ["Choi", 26, male, cool, nice, rich]
}
const getUserInfo=(name, age, ...userInfo)=>{
console.log(userInfo);
// [male, cool, nice, rich]
}
getUserInfo("Choi", 26, male, cool, nice, rich)
- 일부는 평범한 파라미터로 받고 싶다면 두 번째 함수처럼 작성하면 된다.
- 단, Rest Parameter는 무조건 파라미터의 마지막에 와야 한다.
7) 숏컷
- 객체에서 key와 value의 이름이 같은 경우 축약해서 쓸 수 있다.
const name = "Choi"
const age = 26
const gender = male
const userInfo={
name: name,
age: age,
gender: gender
}
를 축약해서
const userInfo={
name,
age,
gender
}
로 사용가능하다.
8) Spread Operator
- 배열이나 객체 안에 있는 내용들을 풀어서 나열한다는 뜻이다.
- 여러 배열을 풀어서 하나의 배열로 다시 합치는 기능을 할 때 많이 썼다(concat의 기능처럼).
- 그리고 배열을 복사할 때나 아이템을 추가할 때나 소파에서도 많은 경우에 활용됐다.
const array1 = [1, 2, 3]
const array2 = [4, 5, 6]
const newArray = [...array1, ...array2]
console.log(newArray)
// [1, 2, 3, 4, 5, 6]
9) 백틱 string
- 변수와 문자를 섞어 쓸 때 편리하게 작성할 수 있게 도와준다.
const name = "Choi"
const oldVer = "Hi" + name + "is here"
const newVer = `Hi ${name} is here
3. ES11
1) Optional Chaining
- 리액트에서 자주 활용하게 되는 기능이다.
- SPA의 특성상 유동적인 데이터를 담는 state를 활용하게 되니 렌더링 시 데이터 페칭의 시간동안 state가 비어 있는 경우 에러가 난다. 이 때 데이터를 불러와서 state에 담길 동안 에러를 띄우지 않고 기다려주는 용도로 활용했다.
- 객체에 주로 사용하는데 이 것의 값이 있나요? 있다면 이 걸 찾아주시고 이게 있다면 그 것이 이 값을 가지고 있다면 이렇게 해주세요
const data = {
userInfo: {
name: "Choi"
}
}
console.log(data?.userInfo?.name)
2) false를 판단하는 연산자
① || 연산자
- null, undefined, 0 , "", false 를 false로 인식한다.
② ?? 연산자
- 0과 ""을 제외하고 null, undefined, false를 false로 인식한다.
4. 기타
ES7 : async / await
콜백함수 저리가
5. 생각
- 나는 비교적 최근 자바스크립트를 배운 지라 이 기능들을 당연히 알고 있었는데 신기능에 속하는 편이라고 하더라.
- 정말,, 좋을 때 공부를 시작한거구나,, 라는 생각이 들 정도로 무엇하나 빼먹지 못할 정도로 지금 다 유용하게 사용하고 있는 기술들이다.
- 2015년이면 고3이었는데 내가 미성년자일 때 개발하시던 분들은 대체 어떤 싸움을 하고 계셨던 걸까..
Author And Source
이 문제에 관하여(ES6 / ES11 기능 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@db970406/ES6-ES11-기능-정리
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
const data = {
userInfo: {
name: "Choi"
}
}
console.log(data?.userInfo?.name)
ES7 : async / await
콜백함수 저리가
5. 생각
- 나는 비교적 최근 자바스크립트를 배운 지라 이 기능들을 당연히 알고 있었는데 신기능에 속하는 편이라고 하더라.
- 정말,, 좋을 때 공부를 시작한거구나,, 라는 생각이 들 정도로 무엇하나 빼먹지 못할 정도로 지금 다 유용하게 사용하고 있는 기술들이다.
- 2015년이면 고3이었는데 내가 미성년자일 때 개발하시던 분들은 대체 어떤 싸움을 하고 계셨던 걸까..
Author And Source
이 문제에 관하여(ES6 / ES11 기능 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@db970406/ES6-ES11-기능-정리
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Author And Source
이 문제에 관하여(ES6 / ES11 기능 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@db970406/ES6-ES11-기능-정리저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)