디스트럭처링 할당이란?
디스트럭처링(Destructuring)은 구조화된 배열 또는 객체를 Destructuring(비구조화, 파괴)하여 개별적인 변수에 할당하는 것이다.
배열 또는 객체 리터럴에서 필요한 값만을 추출하여 변수에 할당하거나 반환할 때 유용하다.
Object 디스트럭처링
const obj = {b : 2, c: 3, d: 4};
const [a,b,c] = obj;
a; // undefined
b; // 2
c; // 3
d; // ReferenceError;
- 객체를 해체할 때는 반드시 변수 이름과 객체의 프로퍼티 이름이 일치해야한다.
- 프로퍼티 이름이 유효한 식별자인 프로퍼티만 해체 후 할당된다.
const obj = {b : 2, c: 3, d: 4};
let a, b, c;
{a,b,c} = obj;
// -> 에러가 일어남
({a,b,c} = obj);
// -> 정상 동작
- 객체할당은 반드시 괄호를 써야한다.
Array 디스트럭처링
const arr = [1,2,3];
let [x,y] = arr;
x; // 1
y; // 2
z; // 참조 에러
--------------------------------
const arr = [1,2,3,4,5];
let [x, y, ...rest] = arr;
x; // 1
y; // 2
rest; // [3,4,5]
- 배열 요소에 대응할 변수 이름을 마음대로 쓸 수 있다.
- 배열 순서대로 대응한다.
- spread operators (...)를 사용하면 남은 요소를 새 배열에 할당할 수 있다.
Default Value 디스트럭처링
const { id, name, addr = 'Seoul' } = { id: 1, name: 'Hong' };
// addr = 'Seoul'
const [ a, b, c = 3 ] = [ 1, 2 ];
// a = 1, b = 2, c = 3
Function Arguments 디스트럭처링
const user = { id: 1, name: 'Hong', addr: { city: 'Seoul' } };
function fn(arg1, {id, name}, arg2) { console.log(arg1, id, name, arg2); }
fn(10, user, 20);
// 10, {id : 1, name : 'Hong' }, 20
예제
key를 전달하면 해당 값의 첫 글자를 제외한 문자를 리턴하는 함수를 destructing을 최대한 활용하여 작성하기
const user1 = { name: "Hong", passwd: "xyz", addr: "Seoul" };
function getUserValueExceptInitial(k) {
const { [k]: val } = user1;
const [a, ...word] = val;
return word.join("");
}
console.log(getUserValueExceptInitial("name")); // 'ong'
console.log(getUserValueExceptInitial("passwd")); // 'yz'
console.log(getUserValueExceptInitial("addr")); // 'eoul''Dev > Javascript' 카테고리의 다른 글
| [JS] 클로저 (Closure) (0) | 2025.04.09 |
|---|---|
| [JS] 스코프 (2) | 2025.04.08 |
| [JS] 실행 컨텍스트 (2) | 2025.04.08 |
| [JS] strict mode (0) | 2025.04.08 |
| [JS] 리터럴과 변수, 상수, 데이터 타입 (0) | 2025.04.03 |
