Koras02
Koras02코딩웹
Koras02
전체 방문자
오늘
어제
  • 분류 전체보기 (299)
    • 백엔드 (59)
      • nestjs (2)
      • Ruby (3)
      • PostgresQL (11)
      • MySQL (5)
      • Haskell (7)
      • Koa (3)
      • Java (3)
      • Python (5)
      • Rust (5)
      • MongoDB (2)
      • PHP (3)
      • Spring Boot (1)
      • redis (5)
      • deno (2)
    • 웹서버 (3)
      • nginx (1)
      • Apache (2)
      • Google Web Server (0)
    • 모바일개발 (5)
      • Figma (0)
      • React Native (2)
      • swift (0)
      • Flutter (3)
      • Kotlin (0)
    • 프론트 엔드 (158)
      • HTML (34)
      • CSS (7)
      • Javascript (35)
      • Angular (0)
      • Typescript (2)
      • React (58)
      • Vue (2)
      • GIT (6)
      • GraphQL (1)
      • Doker (4)
      • Go (8)
      • svelte (1)
      • gatsby (0)
    • etc. (47)
      • Notion (0)
      • TIL (24)
      • Algorithm (17)
      • Algorithm 개념 정리 (2)
      • Wiki (3)
      • Official document (1)
    • 웹개념 (12)
    • 변수정리 (1)
    • VSCode (2)
    • 포트폴리오 분석 (2)
      • React (2)
    • os (5)
      • 윈도우 (4)
      • Mac (0)
      • 가상머신 (0)
      • linux (1)
    • 응용프로그램언어 (2)
      • C (2)
      • C++ (0)
      • C# (0)
    • 블로그 운영관련 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
글쓰기

공지사항

  • [공지사항] 개발 이슈나 공식문서 업데이트 업로드 예정입니⋯

인기 글

태그

  • 하스켈
  • html
  • html5
  • 데이터 타입
  • Til
  • 프로그래머스
  • javascript
  • 알고리즘
  • Java
  • React
  • mysql
  • redis
  • koa
  • 문자열
  • Flutter
  • Rust
  • go
  • CSS
  • PostgreSQL
  • Haskell

티스토리

최근 댓글

최근 글

250x250
hELLO · Designed By 정상우.
Koras02

Koras02코딩웹

[Javascript] Javsacript ES6 주요 특징
프론트 엔드/Javascript

[Javascript] Javsacript ES6 주요 특징

2022. 1. 20. 23:36
728x90

ES6 주요 특징

  • class 전격 지원
  • let, const 문법
  • 화살표 함수(Arrow Function)
  • Modules
  • Promise
  • 비구조화 할당(Destructuring Assignment)
  • 템플릿 리터럴(Template Literals)
  • 매개변수 기본값 설정

1. class 전격지원

기존의 Javascript는 다른 객체지향 언어와는 달리 prototype을 기반으로 class를 묘사했는데, es6 문법에서는 

new라는 키워드로 class 생성이 가능하다.

class Cat {
   // constructor
  constructor(name) {
    this.name = name;
  }
  
  sayHi() {
    console.log(`Hi! ${this.name}`);
  }
}

const dd = new Cat("DD");
dd.sayHi(); // Hi DD

2. let, const 문법

function scope를 가진 기존의 var 키워드 외에 block scope를 가지는 let, const 키워드가 등장했다.

function running() {
  let kim = "A";
  let hun = "B";
  const jim = "F";
  
  console.log(kim, hun, jim);
  
  {
    let c = "C";
    let d = "D";
    const e = "E";
    console.log(d)
  }
  
  console.log(c); // C --> var는 함수레벨 스코프라 가능
  console.log(d); // d is not defined == d는 불러올 수 없다.
  console.log(e); // e is not defined
  // --> d, e 는 let, const로 선언되었고, 선언된 블록을 벗어났기 때문에 에러가 발생!!
  
}

running()

3. 화살표 함수(Arrow Function)

  • 화살표 함수는 익명 함수로, let, const 선언 키워드로 이름을 부여할 수 있다.
  • 화살표 함수에서 this의 의미
    일반함수에서는 호출에 따라 this가 동적으로 결정된다.
    화살표 함수는 선언될 때, this가 선언된 함수의 상위 스코프에 바인딩 되고 화살표 함수는 
    그 어떤 경우에도 this를 결정하지 않는다.
const add = function(x,y) {
    return x + y;
  // 함수 표현식

}

const add = (x, y) => x + y // 화살표 함수

4. Modules

모듈: 재사용 가능한 코드조각

  • 파일 단위의 모듈 스코프를 지원한다.
  • import로 모듈 불러오기가 가능하다.
  • export로 모듈 내보내기가 가능하다.
// module_01.js
export var hello = "world";
// module_02.js
export default function greeting(name) {
  return `hello, ${name}!`
}
// app.js
import {hello} from './module_01.js'
// 비구조화 할당으로 가져오기
import greeting from './module_02.js'
/* 하나의 개체가 있는 파일에서 export default를 하면 
중괄호 없이 가져올 수 있다.*/

5. Promise

순차적이지 않은 비동기 함수의 실행을 동기적으로 진행할 수 있게 지원하는 기능

 

프로미스의 3가지 상태

  • Pending(대기) : 비동기 처리 로직이 아직 완료되지 않은 상태
  • Fulfilled(이행): 비동기 처리가 완료되 프로미스가 결과 값을 반환해준 상태
  • Rejected(실패): 비동기 처리가 실패하거나 오류가 발생한 상태
setTimeout(function() {
   console.log('Yes!')
}, 1000) 
// 비동기 코드
let waitTime = new Promise(function(resolve, reject) {
   setTimeout(resolve, 1000)
}).then(function() {
   console.log("Yay!')
}) // Promise를 이용한 비동기 코드

6. 비구조화 할당

객체나 배열

function reset(a , b = 1) {
   return a + b;
} // 매개변수 b가 주어지지 않을 경우 초기값 1로 설정

console.log(add(5, 3));
// 8

console.log(add(5));
// 6

에서 속성이나 요소를 꺼내올 때 사용할 수 있다.

let obj = {p: 42, q: true};
let {p, q} = obj;

console.log(p); // 42
console.log(q); // true

7. 템플릿 리터럴 (Template Literals)

템플릿 리터럴은 백틱(``)을 이용해 내장된 표현식을 허용하는 문자열 리터럴이다. 템플릿 리터럴은 또한 
placeholder를 사용해 표현식을 넣을 수 있고, 이는 $와 중괄호 (${expression})로 표기할 수 있다.

let t = "template";
let l = "literals";

console.log(`This is ${t} ${l}.`)
// Template Literals 방식

8. 매개변수 기본값 설정

기본값 함수 매개변수 (default function parameter)를 사용하면 값이 없거나 undefined가 전달될 경우 이름붙은 

매개변수를 기본값으로 초기화 시킬 수 있다.

function add(a, b = 1) {
  return a + b;
}// 매개변수 b가 주어지지 않을 경우 초기값을 1로 설정한다.

console.log(add(5, 3));
// 8

console.log(add(5));
// 6

참고 링크

 

Javascript ES6 주요 특징

class 전격지원let, const 문법화살표 함수(Arrow Function)ModulesPromise비구조화 할당(Destructuring Assignment)템플릿 리터럴(Template Literals)매개변수 기본값 설정기존의 자바스크립트는 다른 객체지향 언

velog.io

 

'프론트 엔드 > Javascript' 카테고리의 다른 글

변수 타입 (var, let, const)와 스코프 연산자(scope) 개념  (0) 2022.01.21
[Javascript] 자바스크립트: '==' 와 '==='는 다르다!  (0) 2022.01.20
[JS] JS와 TS의 차이점  (0) 2022.01.20
    '프론트 엔드/Javascript' 카테고리의 다른 글
    • [Javascript] Javascript와 Node.js의 차이
    • 변수 타입 (var, let, const)와 스코프 연산자(scope) 개념
    • [Javascript] 자바스크립트: '==' 와 '==='는 다르다!
    • [JS] JS와 TS의 차이점
    Koras02
    Koras02
    현재 사용중인 언어 - next-js,react,vue, typescript

    티스토리툴바