ES6란
ES6(ECMAScript 6), 또는 ECMAScript 2015라고도 불리며, 자바스크립트의 주요 업그레이드 버전이다. ES6는 자바스크립트의 기능을 대폭 확장하면서 코드 작성이 더 쉬워지고, 효율적으로 바뀌게 만든 업데이트이다.
뭐가 업데이트가 돼었는지 하나씩 알아보겠다.
1. let과 const
var vs. let vs. const
- var: 전통적인 변수 선언 방식이지만, 블록 스코프를 지원하지 않아서 변수의 범위를 제어하기 어려우며, 함수 스코프이다.
- let: ES6에서 새로 도입된 변수 선언 방식이다. let은 블록 스코프를 지원하여 if, for, while 같은 블록 내부에서만 변수가 유효하다.
- const: 상수 선언 방식이며, 한 번 값이 할당되면 그 값을 변경할 수 없다. 마찬가지로 블록 스코프를 지원한다.
let a = 10;
a = 20; // 가능
const b = 30;
b = 40; // 오류 발생 - const로 선언된 변수는 값을 변경할 수 없음
2. 화살표 함수(Arrow Functions)
ES6에서 도입된 화살표 함수는 기존의 함수 선언 방식을 간결하게 만드는 기능이다.
전통적인 함수와 화살표 함수를 한번 알아보자.
아래는 전통적인 함수이다.
function add(a, b) {
return a + b;
}
아래는 화살표 함수이다.
const add = (a, b) => a + b;
3.템플릿 리터럴 (Template Literals)
ES6에서는 문자열을 다루기 더 쉽게 만들기 위해 템플릿 리터럴이라는 새로운 방식이 도입되었다. 이를 사용하면 복잡한 문자열을 더 간단하게 작성할 수 있다.
전통적인 문자열 결합과 템플릿 리터럴을 사용한 문자열을 비교해보자.
아래는 전통적인 문자열 결합이다.
const name = "Kim";
const greeting = "Hello, " + name + "!";
아래는 템플릿 리터럴을 사용한 문자열.
const name = "Kim";
const greeting = `Hello, ${name}!`;
4.,디스트럭처링 할당 (Destructuring Assignment)
디스트럭처링은 배열이나 객체에서 값을 간편하게 추출할 수 있도록 하는 기능이다.
배열 디스트럭처링과 객체 디스트럭처링을 알아보자.
아래는 배열 디스트럭처링 이다.
const numbers = [1, 2, 3];
const [first, second, third] = numbers;
console.log(first); // 1
console.log(second); // 2
아래는 객체 디스트럭처링이다.
const person = { name: "Kim", age: 25 };
const { name, age } = person;
console.log(name); // Kim
console.log(age); // 25
5. 기본 매개변수(Default Parameters)
함수에 전달된 인자가 없을 때 기본값을 설정할 수 있으며, ES6 이전에는 조건문을 통해 기본값을 설정했지만, ES6 이후에는 함수 정의 시 기본값을 직접 설정할 수 있다.
function greet(name = "Kim") {
console.log(`Hello, ${name}!`);
}
greet(); // Hello, Guest!
greet("Kim"); // Hello, Kim!
6. 스프레드 연산자 (Spread Operator) 및 나머지 매개변수(Rest Parameters)
스프레드 연산자는 배열이나 객체를 펼칠때 사용됀다.
나머지 매개변수는 함수가 임의의 인자를 받을 수 있도록 해준다.
아래는 스프레드 연산자이다.
const array1 = [1, 2, 3];
const array2 = [...array1, 4, 5];
console.log(array2); // [1, 2, 3, 4, 5]
아래는 나머지 매개변수 이다.
function sum(...numbers) {
return numbers.reduce((acc, curr) => acc + curr);
}
console.log(sum(1, 2, 3)); // 6
7. 클래스 (Classes)
ES6에서는 객체지향 프로그래밍의 주요 개념인 클래스가 도입되었으며, 자바스크립트는 여전히 프로토타입 기반 언어이지만, 클래스 문법 덕분에 코드가 더 읽기 쉬워졌다.
이렇게 객체지향 스타일로 코드를 더 쉽게 작성 할 수 있다.
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
greet() {
console.log(`Hello, my name is ${this.name}.`);
}
}
const kim = new Person("Kim", 25);
kim.greet(); // Hello, my name is Kim.
8. 모듈 (Modules)
ES6 이전에는 자바스크립트에서 모듈을 구현하기 위해 다양한 패턴들이 사용되었었는데, ES6에서는 모듈 시스템이 공식적으로 도입되었다.
아래는 모듈 내보내기(export)이다.
// math.js
export function add(a, b) {
return a + b;
}
아래는 모듈 가져오기(import)이다.
// main.js
import { add } from './math.js';
console.log(add(1, 2)); // 3
9. 프라미스 (Promises)
ES6 이전에는 비동기 코드를 처리하기 위해 콜백을 사용해야 했다. 하지만 콜백 패턴은 코드가 복잡해질수록 가독성이 떨어지는 단점이 있어서 이를 보완하고자 ES6에서는 프라미스(Promise)가 도입되어 비동기 코드 처리를 더 명확하고 간결하게 만들었다.
아래는 예시 코드이다. 비동기 작업을 직관적이고 간결하게 처리 할 수 있다.
const fetchDataInfo = new Promise((resolve, reject) => {
// 비동기 작업
const success = true;
if (success) {
resolve("Data fetched");
} else {
reject("Error");
}
});
fetchDataInfo
.then(data => console.log(data))
.catch(error => console.error(error));
10. 심볼 (Symbols)
ES6는 심볼(Symbol) 이라는 새로운 기본 데이터 타입을 도입했다. 심볼은 고유하고 변경 불가능한 값으로, 주로 객체의 프로퍼티 키로 사용된다.
const symbol1 = Symbol('test');
const symbol2 = Symbol('test');
console.log(symbol1 === symbol2); // false
ES6는 자바스크립트에 변화를 가져왔으며, 이로 인해 코드 작성이 더 쉽고 간결해졌으며, let과 const를 사용한 변수 선언, 화살표 함수, 클래스, 모듈, 프라미스 등의 기능은 자바스크립트의 가독성과 유지보수성을 대폭 개선시켰다. ES6의 주요 기능들을 이해하고 활용하면 좋을 거 같아서 ES6의 대해 알아보았다.
2024.08.28 - [JavaScript] - [JavaScript] const, var , let 변수 선언 차이점
[JavaScript] const, var , let 변수 선언 차이점
JavaScript에서 const, let, var는 변수를 선언할 때 사용하는 키워드 이다. const, let, var 이 셋은 선언된 변수가 어떻게 동작하는지에 따라 중요한 차이점이 있으며, 간단하게 각각의 설명과 차이점을
ycds.tistory.com
2024.08.26 - [JavaScript] - [JavaScript] 호이스팅(Hoisting) 과 스코프(Scope)란?
[JavaScript] 호이스팅(Hoisting) 과 스코프(Scope)란?
JavaScript에서 호이스팅과 스코프는 변수와 함수의 동작을 이해하는데에 아주 중요한 개념이다. 코딩을 하기전에 한번쯤 생각 해봤으면 좋겠다 . (나포함) 우선 호이스팅부터 알아보자. 호이
ycds.tistory.com
'JavaScript' 카테고리의 다른 글
[JavaScript] Excel 다운로드 기능 (0) | 2025.04.21 |
---|---|
[JavaScript] 서버사이드 렌더링(SSR) 클라이언트사이드 렌더링(CSR)? (4) | 2024.09.02 |
[JavaScript] undefined와 null 차이 (0) | 2024.08.28 |
[JavaScript] const, var , let 변수 선언 차이점 (0) | 2024.08.28 |
[JavaScript] TDZ(Temporal Dead Zone)란? (0) | 2024.08.26 |