[ECMAScript] ES5와 ES6의 차이점

2025. 3. 13. 00:05·Javascript
목차
  1.  
  2. 1. 변수 선언
  3. 2. 함수 선언 및 화살표 함수
  4. 3. 문자열 템플릿 (Template Literals)
  5. 4. 객체 리터럴 개선
  6. 5. 디스트럭처링 (Destructuring)
  7. 6. 클래스 (Class)
  8. 7. 모듈 시스템 (Module)
  9. 8. Promise 및 비동기 처리
  10. 9. 스프레드 연산자 (...)
  11. 10. 기본 매개변수 (Default Parameters)

ECMA라는 국제 기구에서 만든 표준문서인 ECMAScript의 6번째 개정판이 2015년에 등장했다.

나는 2015년 이전에 javascript를 공부했기 때문에 2009년에 배포된 ES5의 문법을 주로 사용했는데, ES16의 발표를 앞두고 있는 시점에 정리를 해보려고 한다.

 

1. 변수 선언

구분 ES5 ES6
키워드 var let, const
특징 함수 스코프, 재선언 가능 블록 스코프, 재선언 불가(const는 재할당도 불가)
// ES5
var x = 10;
var x = 20; // 재선언 가능

// ES6
let y = 10;
let y = 20; // 오류(재선언 불가)
const z = 30;
z = 40; // 오류(재할당 불가)

 

 

2. 함수 선언 및 화살표 함수

구분 ES5 ES6
함수 선언 방식 function 키워드 사용 =>(화살표 함수) 사용
특징 this가 호출 위치에 따라 변함 this가 선언된 위치의 this를 유지(렉시컬 스코프)
// ES5
var self = this;
function print(){
	console.log(this); // 실행 컨텍스트에 따라 'this'가 달라짐
}

// ES6
const printArrow = () => {
	console.log(this); // 선언된 위치의 'this'를 유지
};

 

 

3. 문자열 템플릿 (Template Literals)

구분 ES5 ES6
문자열 연결 + 연산자로 연결 백틱(`)과 ${} 사용
// ES5
var name = "Tom";
var message = "Hello, " + name + "!";

// ES6
const name = "Tom";
const message = `Hello, ${name}!`;

 

 

4. 객체 리터럴 개선

구분 ES5 ES6
객체 속성 선언 키와 값을 명시해야 함 변수명을 키로 자동 설정 가능
메서드 선언 function 키워드 필요 function 없이 선언 가능
// ES5
var name = "Tom";
var person = {
	name: name,
    greet: function() {
    	console.log("Hello!");
    },
};

// ES6
const name = "Tom";
const person = {
	name, // 변수명을 키로 자동 설정
    greet() {
    	console.log("Hello!");
    },
};

 

 

5. 디스트럭처링 (Destructuring)

구분 ES5 ES6
배열/객체 값 추출 var 사용, 인덱스/속성으로 접근 [ ], { } 문법 사용
// ES5
var person = { name: "Tom", age: 25 };
var name = person.name;
var age = person.age;

// ES6
const person = { name: "Tom", age: 25 };
const { name, age } = person;

 

 

6. 클래스 (Class)

구분 ES5 ES6
객체 생성 방식 생성자 함수 사용 class 키워드 사용
상속 방식 prototype 사용 extends 사용
// ES5
function Person(name, age) {
	this.name = name;
    this.age = age;
}
Person.prototype.greet = function() {
	console.log("Hello!");
};

// ES6
class Person {
	constructor(anme, age) {
    	this.name = name;
        this.age = age;
    }
    greet() {
    	console.log("Hello!");
    }
}

 

 

7. 모듈 시스템 (Module)

구분 ES5 ES6
모듈화 방식 require() (CommonJS) import/export (ESM)
// ES5 (CommonJS)
var myModule = require("./myModule");

// ES6 (ESM)
import myModule from "./myModule";

 

 

8. Promise 및 비동기 처리

구분 ES5 ES6
비동기 처리 콜백 함수 사용 Promise 및 async/await 사용
// ES5 (콜백)
function getData(callback) {
	setTimeout(function() {
    	callback("data");
    }, 1000);
}

// ES6 (Promise)
function getData() {
	return new Promise((resolve) => {
    	setTimeout(() => resolve("data"), 1000);
    });
}

// ES6 (async/await)
async function fetchData() {
	const data = await getData();
    console.log(data);
}

 

 

9. 스프레드 연산자 (...)

구분 ES5 ES6
배열 결합/복사 concat(), slice() 사용 ... 연산자로 간단하게 가능
// ES5
var arr1 = [1, 2];
var arr2 = [3, 4];
var combined = arr1.concat(arr2);

// ES6
const arr1 = [1, 2];
const arr2 = [3, 4];
const combined = [...arr1, ...arr2];

 

 

10. 기본 매개변수 (Default Parameters)

구분 ES5 ES6
기본값 할당 if 문 사용 = 연산자로 간단하게 가능
// ES5
function greet(name) {
	var username = name || "Guest";
    console.log("Hello, " + username);
}

// ES6
function greet(name = "Guest") {
	console.log("`Hello, ${name}`);
}

 

 

저작자표시 비영리 변경금지

'Javascript' 카테고리의 다른 글

자바스크립트의 숨겨진 비밀 : 우리가 몰랐던 JS의 흥미로운 동작들  (1) 2025.03.15
[Javascript] prototype 개념과 동작 방식  (1) 2025.03.14
더 이상 var를 사용하지 않는 이유  (0) 2023.09.08
break, continue, return 등 for문, 중첩for문, if문 제어 명령어 정리  (0) 2023.08.31
[Javascript] Date 객체 날짜 더하기/빼기  (0) 2022.10.06
  1.  
  2. 1. 변수 선언
  3. 2. 함수 선언 및 화살표 함수
  4. 3. 문자열 템플릿 (Template Literals)
  5. 4. 객체 리터럴 개선
  6. 5. 디스트럭처링 (Destructuring)
  7. 6. 클래스 (Class)
  8. 7. 모듈 시스템 (Module)
  9. 8. Promise 및 비동기 처리
  10. 9. 스프레드 연산자 (...)
  11. 10. 기본 매개변수 (Default Parameters)
'Javascript' 카테고리의 다른 글
  • 자바스크립트의 숨겨진 비밀 : 우리가 몰랐던 JS의 흥미로운 동작들
  • [Javascript] prototype 개념과 동작 방식
  • 더 이상 var를 사용하지 않는 이유
  • break, continue, return 등 for문, 중첩for문, if문 제어 명령어 정리
부지런한피로
부지런한피로
부지런한피로
Something Note
부지런한피로
전체
오늘
어제
  • 분류 전체보기 (38)
    • Javascript (14)
    • 자료구조 (1)
    • Tools (5)
      • DBMS (1)
      • IntelliJ (1)
      • 기타 (3)
    • 서버 (2)
    • DataBase (13)
    • 리액트 (2)
    • git (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

insert
코딩
사용법
Database
리액트
오라클
엑셀쿼리문
프로그래밍
테이블@
정규표현식
정규식
javascript
js
dabatase
Oracle
클래스형
작업환경설정
저장구조
명령어
웹개발
객체지향
SQL
2중for
var를쓰면안되는이유
튜닝
db
인덱스
SQLP
기본
개발자

최근 댓글

최근 글

hELLO· Designed By정상우.v4.5.3
부지런한피로
[ECMAScript] ES5와 ES6의 차이점
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.