JavaScript 함수 매개변수 구조 분해
구조 분해에는 또 다른 매우 중요한 활용 영역이 있습니다 - 함수 매개변수 전달입니다. 핵심은 다음과 같습니다: 함수가 매개변수로 배열을 받는 경우, 우리는 함수 선언에서 직접 해당 배열을 어떻게 구조 분해할지 지정할 수 있습니다.
예제를 통해 살펴보겠습니다. 연도, 월, 일을 포함하는 배열을 매개변수로 받는 함수가 있다고 가정해 봅시다:
func([2025, 12, 31]);
이제 함수의 매개변수 부분에서 직접 이 배열을 어떤 변수들로 분해해야 하는지 지정해 보겠습니다:
function func([year, month, day]) {
console.log(year); // 2025 출력
console.log(month); // 12 출력
console.log(day); // 31 출력
}
위의 구조는 함수의 하나의 매개변수로 간주해야 합니다. 원한다면 더 많은 매개변수를 추가할 수 있습니다:
func('str1', [2025, 12, 31], 'str2');
function func(param1, [year, month, day], param2) {
console.log(param1); // 'str1' 출력
console.log(year); // 2025 출력
console.log(month); // 12 출력
console.log(day); // 31 출력
console.log(param2); // 'str2' 출력
}
다음 예제에서는 함수의 첫 번째와 두 번째 매개변수로 배열들이 전달되고 있으며, 우리는 둘 다 구조 분해합니다:
func([2025, 12, 31], [2026, 11, 30]);
function func([year1, month1, day1], [year2, month2, day2]) {
console.log(year1); // 2025 출력
console.log(month1); // 12 출력
console.log(day1); // 31 출력
console.log(year2); // 2026 출력
console.log(month2); // 11 출력
console.log(day2); // 30 출력
}
배운 이론에 따라 다음 코드를 구조 분해를 사용해 수정하세요:
function func(employee) {
let name = employee[0];
let surname = employee[1];
let department = employee[2];
let position = employee[3];
let salary = employee[4];
}
func( ['John', 'Smit', 'development', 'programmer', 2000] );
배운 이론에 따라 다음 코드를 구조 분해를 사용해 수정하세요:
function func(employee) {
let name = employee[0];
let surname = employee[1];
let info = employee[2];
}
func( ['John', 'Smit', 'development', 'programmer', 2000] );
배운 이론에 따라 다음 코드를 구조 분해를 사용해 수정하세요:
function func(employee) {
let name = employee[0];
let surname = employee[1];
let department = employee[2];
let position;
if (arr[3] !== undefined) {
position = arr[3];
} else {
position = 'junior';
}
}
func( ['John', 'Smit', 'development'] );
배운 이론에 따라 다음 코드를 구조 분해를 사용해 수정하세요:
function func(department, employee, hired) {
let name = employee[0];
let surname = employee[1];
let year = hired[0];
let month = hired[1];
let day = hired[2];
}
func( 'development', ['John', 'Smit'], [2018, 12, 31] );