JavaScript 코드 축약
JavaScript 코드 축약은 코드의 가독성을 높이고, 유지보수성을 향상시키며, 불필요한 반복을 줄이기 위해 사용되는 중요한 기법입니다. 이번 포스팅에서는 다양한 코드 축약 기법에 대해 자세히 설명하고, 실용적인 예제들을 통해 어떻게 적용할 수 있는지 알아보겠습니다.
변수 선언 축약
변수 선언 시 let
, const
를 사용하여 여러 변수를 한 줄로 선언할 수 있습니다. 이는 여러 변수를 선언할 때 반복되는 코드를 줄여줍니다.
let x = 10, y = 20, z = 30;
const a = 1, b = 2, c = 3;
삼항 연산자
삼항 연산자는 조건문을 보다 간결하게 작성할 수 있게 해줍니다. if-else
문을 축약하여 한 줄로 표현할 수 있습니다.
let age = 20;
let status = age >= 18 ? 'adult' : 'minor';
console.log(status); // adult
단축 평가(Short-Circuit Evaluation)
논리 연산자를 사용하여 간단한 조건문을 작성할 수 있습니다. ||
연산자는 첫 번째 피연산자가 false
일 경우 두 번째 피연산자를 반환하고, &&
연산자는 첫 번째 피연산자가 true
일 경우 두 번째 피연산자를 반환합니다.
let name = userName || 'Guest';
let isAuthenticated = isLoggedIn && hasToken;
객체 속성 축약
객체를 생성할 때 키와 값이 동일한 경우 축약할 수 있습니다. 이는 객체 리터럴을 간결하게 작성하는 방법입니다.
let name = 'John';
let age = 30;
let person = { name, age };
console.log(person); // { name: 'John', age: 30 }
화살표 함수
화살표 함수는 익명 함수를 더 간결하게 작성할 수 있게 해줍니다. 특히 콜백 함수를 작성할 때 유용합니다.
// 기존 함수 선언
function add(a, b) {
return a + b;
}
// 화살표 함수
const add = (a, b) => a + b;
console.log(add(2, 3)); // 5
배열 메서드
map
, filter
, reduce
등의 배열 메서드를 사용하면 반복문을 보다 간결하게 작성할 수 있습니다. 이는 배열을 다룰 때 매우 유용합니다.
let numbers = [1, 2, 3, 4, 5];
// 기존 for문
let doubled = [];
for (let i = 0; i < numbers.length; i++) { doubled.push(numbers[i] * 2); } // map 메서드 사용 let doubled = numbers.map(num => num * 2);
console.log(doubled); // [2, 4, 6, 8, 10]
템플릿 리터럴
템플릿 리터럴을 사용하면 문자열을 더 간결하고 가독성 있게 작성할 수 있습니다. 특히 문자열 내에서 변수를 포함할 때 유용합니다.
let name = 'John';
let age = 30;
// 기존 문자열 연결
let greeting = 'Hello, my name is ' + name + ' and I am ' + age + ' years old.';
// 템플릿 리터럴 사용
let greeting = `Hello, my name is ${name} and I am ${age} years old.`;
console.log(greeting); // Hello, my name is John and I am 30 years old.
단축 속성명과 계산된 속성명
객체 리터럴에서 속성명을 간략하게 또는 동적으로 정의할 수 있습니다.
let propName = 'name';
let person = {
[propName]: 'John',
age: 30
};
console.log(person); // { name: 'John', age: 30 }
파라미터 기본값
함수의 매개변수에 기본값을 설정하여 조건문을 줄일 수 있습니다. 이는 함수 호출 시 인자가 생략되었을 때 유용합니다.
// 기존 기본값 설정
function greet(name) {
name = name || 'Guest';
console.log('Hello, ' + name);
}
// 기본값 사용
function greet(name = 'Guest') {
console.log('Hello, ' + name);
}
greet(); // Hello, Guest
객체 디스트럭처링
객체 디스트럭처링을 사용하면 객체 속성을 쉽게 추출하여 변수에 할당할 수 있습니다. 이는 코드의 가독성을 높여줍니다.
const person = {
name: 'John',
age: 30,
city: 'New York'
};
const { name, age, city } = person;
console.log(name); // John
console.log(age); // 30
console.log(city); // New York
실용적인 예제
디스트럭처링은 실제로 어떻게 사용될 수 있는지에 대한 몇 가지 실용적인 예제를 살펴보겠습니다.
API 응답 처리
API로부터 받은 JSON 응답을 처리할 때 유용하게 사용할 수 있습니다.
const response = {
data: {
user: {
id: 1,
name: 'John Doe',
email: 'john@example.com'
},
status: 'success'
}
};
const { data: { user: { id, name, email } }, status } = response;
console.log(id); // 1
console.log(name); // John Doe
console.log(email); // john@example.com
console.log(status);// success
설정 객체
함수에 전달되는 설정 객체의 디스트럭처링 예제입니다.
function setupCanvas({ width = 600, height = 400, backgroundColor = 'white' } = {}) {
console.log(`Width: ${width}, Height: ${height}, BackgroundColor: ${backgroundColor}`);
}
setupCanvas({ width: 800, height: 600 });
// Width: 800, Height: 600, BackgroundColor: white
setupCanvas();
// Width: 600, Height: 400, BackgroundColor: white
파라미터 디폴트 값과 조합
함수의 파라미터 디폴트 값과 디스트럭처링을 조합하여 사용할 수 있습니다.
function createUser({ name = 'Anonymous', age = 0, isActive = false } = {}) {
console.log(`Name: ${name}, Age: ${age}, Active: ${isActive}`);
}
createUser({ name: 'Alice', age: 25 });
// Name: Alice, Age: 25, Active: false
createUser();
// Name: Anonymous, Age: 0, Active: false
배열 디스트럭처링
객체뿐만 아니라 배열에서도 디스트럭처링을 사용할 수 있습니다. 이는 배열의 요소를 쉽게 추출할 수 있게 해줍니다.
const numbers = [1, 2, 3, 4, 5];
const [first, second, ...rest] = numbers;
console.log(first); // 1
console.log(second); // 2
console.log(rest); // [3, 4, 5]
결론
JavaScript 코드 축약 기법을 활용하면 코드를 더욱 간결하고 효율적으로 작성할 수 있습니다. 이번 포스팅에서 소개한 다양한 기법들을 통해 코드의 가독성과 유지보수성을 향상시킬 수 있기를 바랍니다.