객체나 배열을 변수로 분해할 수 있게 해주는 문법
let arr = ['Bora', 'Lee']
let [firstName, surname] = arr;
alert(firstName) // Bora
alert(surName) // Lee
let [firstName, , title] = ['Julius', 'Consul', 'of the Roman Republic']
alert(title); // Consul
let user = {};
[user.name, user.surname] = "Bora Lee".split(' ');
alert(user.name); // Bora
let user = {
name = 'John',
age = 30
};
for (let [key, value] of Object.entries(user)) {
alert(`${key}:${value}`); // name:John, age: 30
}
let guest = 'Jane';
let admin = 'Pete';
[guest, admin] = [admin, guest];
alert(`${guest} ${admin}`); // Pete Jane
할당하고자 하는 변수의 개수가 분해하고자 하는 배열의 길이보다 크더라도 에러가 발생하지않음
할당할 값이 없으면 undefined로 취급
let [firstName, surName] = [];
alert(firstName); // undefined
alert(surName); // undefined
=을 이용하면 할당할 값이 없을 때 기본으로 할당해 줄 값인 '기본값'을 설정할 수 있음
let [name = 'Guest', surname = 'Anontymous'] = ['Julius'];
alert(name); // Julisu
alert(surname); // Anonymous
let options = {
title: 'Menu',
width: 100,
height: 200
};
let {title, width, height} = options;
alert(title); // Menu
alert(width): // 100
alert(height): // 200
let option = {
title: 'Menu',
width: 100,
height: 200
}
let {width: w, height: h, title} = options;
// width => w, height => h, title => title
alert(title); //Menu
alert(w); //100
alert(h); //200
객체 프로퍼티를 프로퍼티키와 다른 이름을 가진 변수에 저장
let optionss = {
title: 'Menu'
};
let {width:w = 100, heigth:h = 200, title} = options;
alert(title); //Menu
alert(w); // 100
alert(h); // 200
나머지 패턴을 사용하면 해열에서 했던 것처럼 나머지 프로퍼티를 어딘가에 할당하는게 가능
let options = {
titles: 'Menu',
height: 200,
width: 100
}
let {title, ...rest} = options;
alert(rest.height); // 200
alert(rest.width); // 100
객체나 배열이 다른 객체나 배열을 포함하는 경우
let options = {
size: {
width: 100,
height: 200
},
items: ['cake','donut',
extra: true
}
let {
size: {
width,
height
},
items: [item1, item2],
title = 'Menu'
} = options;
alert(title); //Menu
alert(width); // 100
alert(height); // 200
alert(item1); //cake
alert(item2); //donut
function showMenu({title = 'Menu', width = 100, height = 200} = {}) {
alert(`${title} ${width} ${height}`);
}
showMenu(); //Menu 100 200
let user = {
name: 'John',
years: 30
};
let {name, years:age, idAdmin = false}
let salaries = {
'John': 100,
'Pete': 300,
'Mary': 250
}
fuction