자바스크립트의 확장 문법
안녕하세요! 오늘은 자바스크립트의 확장 문법에 대해 알아보겠습니다. 특히 ES6(ECMAScript 2015) 이후 도입된 새로운 문법과 기능들에 대해 살펴보겠습니다. 이러한 확장 문법을 통해 자바스크립트 코드를 더 간결하고 효율적으로 작성할 수 있습니다.
자바스크립트의 확장 문법
1. 화살표 함수 (Arrow Functions)
화살표 함수는 간결한 문법으로 함수를 정의할 수 있는 방법입니다. 특히 this
바인딩이 기존 함수와 다르게 동작하여 콜백 함수 내에서 유용합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 기존 함수 표현식
function sum(a, b) {
return a + b;
}
// 화살표 함수
const sum = (a, b) => a + b;
// this 바인딩 예제
function Timer() {
this.seconds = 0;
setInterval(() => {
this.seconds++;
console.log(this.seconds);
}, 1000);
}
const timer = new Timer();
2. 템플릿 리터럴 (Template Literals)
템플릿 리터럴은 백틱(`
)을 사용하여 문자열을 정의하고, 문자열 내에 표현식을 포함할 수 있습니다. 여러 줄의 문자열도 쉽게 작성할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
const name = 'Alice';
const age = 25;
// 기존 문자열 연결
const greeting = 'Hello, my name is ' + name + ' and I am ' + age + ' years old.';
// 템플릿 리터럴
const greeting = `Hello, my name is ${name} and I am ${age} years old.`;
const multiline = `This is a string
that spans multiple
lines.`;
3. 디스트럭처링 (Destructuring)
디스트럭처링은 배열이나 객체의 값을 변수로 쉽게 할당할 수 있는 문법입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// 배열 디스트럭처링
const [a, b] = [1, 2];
console.log(a); // 1
console.log(b); // 2
// 객체 디스트럭처링
const user = {
name: 'Alice',
age: 25
};
const { name, age } = user;
console.log(name); // Alice
console.log(age); // 25
// 함수 파라미터 디스트럭처링
function greet({ name, age }) {
console.log(`Hello, ${name}. You are ${age} years old.`);
}
greet(user);
4. 기본 매개변수 (Default Parameters)
기본 매개변수를 사용하면 함수 호출 시 인수가 전달되지 않았을 때 기본값을 사용할 수 있습니다.
1
2
3
4
5
6
function greet(name = 'Guest') {
console.log(`Hello, ${name}!`);
}
greet(); // Hello, Guest!
greet('Alice'); // Hello, Alice!
5. 나머지 매개변수와 전개 연산자 (Rest and Spread Operator)
나머지 매개변수는 함수의 인수를 배열로 모을 수 있으며, 전개 연산자는 배열이나 객체를 개별 요소로 분해할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 나머지 매개변수
function sum(...numbers) {
return numbers.reduce((acc, curr) => acc + curr, 0);
}
console.log(sum(1, 2, 3)); // 6
// 전개 연산자
const arr1 = [1, 2, 3];
const arr2 = [...arr1, 4, 5];
console.log(arr2); // [1, 2, 3, 4, 5]
const obj1 = { a: 1, b: 2 };
const obj2 = { ...obj1, c: 3 };
console.log(obj2); // { a: 1, b: 2, c: 3 }
6. 클래스 (Classes)
ES6에서는 클래스를 정의할 수 있는 문법이 도입되었습니다. 클래스를 사용하여 객체 지향 프로그래밍을 쉽게 구현할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
greet() {
console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
}
}
const alice = new Person('Alice', 25);
alice.greet(); // Hello, my name is Alice and I am 25 years old.
7. 모듈 (Modules)
ES6에서는 모듈 시스템이 도입되어, 코드를 모듈 단위로 분리하고 가져올 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// math.js
export function add(a, b) {
return a + b;
}
export function subtract(a, b) {
return a - b;
}
// main.js
import { add, subtract } from './math.js';
console.log(add(5, 3)); // 8
console.log(subtract(5, 3)); // 2
결론
자바스크립트의 확장 문법은 코드를 더욱 간결하고 효율적으로 작성할 수 있게 해줍니다. 화살표 함수, 템플릿 리터럴, 디스트럭처링, 기본 매개변수, 나머지 매개변수와 전개 연산자, 클래스, 모듈 등 다양한 문법을 잘 활용하면, 자바스크립트 개발의 생산성을 크게 높일 수 있습니다.
오늘도 제 글을 읽어주셔서 감사합니다. 다음 시간에 더 유익한 주제로 찾아뵙겠습니다.