ê°ì²´ì ë°°ì´ì ìë°ì¤í¬ë¦½í¸ìì ê°ì¥ ë§ì´ ì°ì´ë ìë£ êµ¬ì¡°ì
ëë¤.
í¤ë¥¼ ê°ì§ ë°ì´í° ì¬ë¬ ê°ë¥¼ íëì ìí°í°ì ì ì¥í ë ê°ì²´ë¥¼, 컬ë ì ì ë°ì´í°ë¥¼ ììëë¡ ì ì¥í ë ë°°ì´ì ì¬ì©íì£ .
ê°ë°ì íë¤ ë³´ë©´ í¨ìì ê°ì²´ë ë°°ì´ì ì ë¬í´ì¼ íë ê²½ì°ê° ì기곤 í©ëë¤. ê°ëì ê°ì²´ë ë°°ì´ì ì ì¥ë ë°ì´í° ì ì²´ê° ìë ì¼ë¶ë§ íìí ê²½ì°ê° ì기기ë íì£ .
ì´ë´ ë ê°ì²´ë ë°°ì´ì ë³ìë¡ 'ë¶í´âí ì ìê² í´ì£¼ë í¹ë³í 문ë²ì¸ 구조 ë¶í´ í ë¹(destructuring assignment) ì ì¬ì©í ì ììµëë¤. ì´ ì¸ìë í¨ìì 매ê°ë³ìê° ë§ê±°ë 매ê°ë³ì 기본ê°ì´ íìí ê²½ì° ë±ìì 구조 ë¶í´(destructuring)ë ê·¸ ì§ê°ë¥¼ ë°íí©ëë¤.
ë°°ì´ ë¶í´í기
ë°°ì´ì´ ì´ë»ê² ë³ìë¡ ë¶í´ëëì§ ìì 를 íµí´ ì´í´ë´ ìë¤.
// ì´ë¦ê³¼ ì±ì ììë¡ ê°ì§ ë°°ì´
let arr = ["Bora", "Lee"]
// 구조 ë¶í´ í ë¹ì ì´ì©í´
// firstNameì arr[0]ì
// surnameì arr[1]ì í ë¹íììµëë¤.
let [firstName, surname] = arr;
alert(firstName); // Bora
alert(surname); // Lee
ì´ì ì¸ë±ì¤ë¥¼ ì´ì©í´ ë°°ì´ì ì ê·¼íì§ ìê³ ë ë³ìë¡ ì´ë¦ê³¼ ì±ì ì¬ì©í ì ìê² ëììµëë¤.
ìë ììì²ë¼ split ê°ì ë°í ê°ì´ ë°°ì´ì¸ ë©ìë를 í¨ê» íì©í´ë ì¢ìµëë¤.
let [firstName, surname] = "Bora Lee".split(' ');
구조 ë¶í´ í ë¹ì´ë ëª ì¹ì ì´ë¤ ê²ì ë³µì¬í ì´íì ë³ìë¡ 'ë¶í´(destructurize)'í´ì¤ë¤ë ì미 ë문ì ë¶ì¬ì¡ìµëë¤. ì´ ê³¼ì ìì ë¶í´ ëìì ìì ëë íê´´ëì§ ììµëë¤.
ë°°ì´ì ìì를 ì§ì ë³ìì í ë¹íë ê²ë³´ë¤ ì½ë ìì´ ì¤ì´ë ë¤ë ì ë§ ë¤ë¦ ëë¤.
// let [firstName, surname] = arr;
let firstName = arr[0];
let surname = arr[1];
ì¼í를 ì¬ì©íë©´ íìíì§ ìì ë°°ì´ ìì를 ë²ë¦´ ì ììµëë¤.
// ë ë²ì§¸ ììë íìíì§ ìì
let [firstName, , title] = ["Julius", "Caesar", "Consul", "of the Roman Republic"];
alert( title ); // Consul
ë ë²ì§¸ ììë ìëµëìì§ë§, ì¸ ë²ì§¸ ììë titleì´ë¼ë ë³ìì í ë¹ë ê²ì íì¸í ì ììµëë¤. í ë¹í ë³ìê° ì기 ë문ì ë¤ ë²ì§¸ ìì ìì ìëµëììµëë¤.
ë°°ì´ë¿ë§ ìëë¼ ëª¨ë ì´í°ë¬ë¸(iterable, ë°ë³µ ê°ë¥í ê°ì²´)ì 구조 ë¶í´ í ë¹ì ì ì©í ì ììµëë¤.
let [a, b, c] = "abc"; // ["a", "b", "c"]
let [one, two, three] = new Set([1, 2, 3]);
í ë¹ ì°ì°ì ì¢ì¸¡ì âí ë¹í ì ìë(assignables)â ê²ì´ë¼ë©´ ì´ë¤ ê²ì´ë ì¬ ì ììµëë¤.
ìëì ê°ì´ ê°ì²´ íë¡í¼í°ë ê°ë¥í©ëë¤.
let user = {};
[user.name, user.surname] = "Bora Lee".split(' ');
alert(user.name); // Bora
Object.entries(obj)ë ì´ì ì±í°ìì íìµí ë° ììµëë¤.
ì´ ë©ìëì 구조 ë¶í´ë¥¼ ì¡°í©íë©´ ê°ì²´ì í¤ì ê°ì ìíí´ ë³ìë¡ ë¶í´ í ë¹í ì ììµëë¤.
let user = {
name: "John",
age: 30
};
// ê°ì²´ì í¤ì ê° ìíí기
for (let [key, value] of Object.entries(user)) {
alert(`${key}:${value}`); // name:John, age:30ì´ ì°¨ë¡ëë¡ ì¶ë ¥
}
ë§µìë ë¬¼ë¡ ì´ ë©ìë를 íì©í ì ììµëë¤.
let user = new Map();
user.set("name", "John");
user.set("age", "30");
for (let [key, value] of user) {
alert(`${key}:${value}`); // name:John, then age:30
}
ë ë³ìì ì ì¥ë ê°ì êµíí ë 구조 ë¶í´ í ë¹ì ì¬ì©í ì ììµëë¤.
let guest = "Jane";
let admin = "Pete";
// ë³ì guestì Pete, ë³ì adminì Janeì´ ì ì¥ëëë¡ ê°ì êµíí¨
[guest, admin] = [admin, guest];
alert(`${guest} ${admin}`); // Pete Jane(ê° êµíì´ ì±ê³µì ì¼ë¡ ì´ë¤ì¡ìµëë¤!)
ìììì ìì ë°°ì´ì ë§ë¤ì´ ë ë³ì를 ë´ê³ , ìì ìì를 êµì²´í´ ë°°ì´ì ë¶í´íë ë°©ìì ì¬ì©íìµëë¤.
ì´ ë°©ìì ì¬ì©íë©´ ë ê°ë¿ë§ ìëë¼ ê·¸ ì´ìì ë³ìì ë´ê¸´ ê°ë êµíí ì ììµëë¤.
'â¦'ë¡ ëë¨¸ì§ ìì ê°ì ¸ì¤ê¸°
ë°°ì´ ì쪽ì ìì¹í ê° ëª ê°ë§ íìíê³ ê·¸ ì´í ì´ì´ì§ë ëë¨¸ì§ ê°ë¤ì íë° ëª¨ìì ì ì¥íê³ ì¶ì ëê° ììµëë¤. ì´ë´ ëë ì ì¸ ê° ...를 ë¶ì¸ 매ê°ë³ì íë를 ì¶ê°íë©´ âë머ì§(rest)â ìì를 ê°ì ¸ì¬ ì ììµëë¤.
let [name1, name2, ...rest] = ["Julius", "Caesar", "Consul", "of the Roman Republic"];
alert(name1); // Julius
alert(name2); // Caesar
// `rest`ë ë°°ì´ì
ëë¤.
alert(rest[0]); // Consul
alert(rest[1]); // of the Roman Republic
alert(rest.length); // 2
restë ëë¨¸ì§ ë°°ì´ ììë¤ì´ ì ì¥ë ìë¡ì´ ë°°ì´ì´ ë©ëë¤. rest ëì ì ë¤ë¥¸ ì´ë¦ì ì¬ì©í´ë ëëë°, ë³ì ìì ì ì¸ ê°(...)ì ë³ìê° ê°ì¥ ë§ì§ë§ì ìì¹í´ì¼ íë¤ë ì ì ì§ì¼ì£¼ì기 ë°ëëë¤.
기본ê°
í ë¹íê³ ì íë ë³ìì ê°ìê° ë¶í´íê³ ì íë ë°°ì´ì 길ì´ë³´ë¤ í¬ëë¼ë ìë¬ê° ë°ìíì§ ììµëë¤. í ë¹í ê°ì´ ìì¼ë©´ undefinedë¡ ì·¨ê¸ë기 ë문ì ëë¤.
let [firstName, surname] = [];
alert(firstName); // undefined
alert(surname); // undefined
=ì ì´ì©íë©´ í ë¹í ê°ì´ ìì ë 기본ì¼ë¡ í ë¹í´ ì¤ ê°ì¸ '기본ê°(default value)'ì ì¤ì í ì ììµëë¤.
// 기본ê°
let [name = "Guest", surname = "Anonymous"] = ["Julius"];
alert(name); // Julius (ë°°ì´ìì ë°ìì¨ ê°)
alert(surname); // Anonymous (기본ê°)
ë³µì¡í ííìì´ë í¨ì í¸ì¶ë 기본ê°ì´ ë ì ììµëë¤. ì´ë ê² ê¸°ë³¸ìì¼ë¡ ííìì´ë í¨ì를 ì¤ì íë©´ í ë¹í ê°ì´ ìì ë ííìì´ íê°ëê±°ë í¨ìê° í¸ì¶ë©ëë¤.
기본ê°ì¼ë¡ ë ê°ì prompt í¨ì를 í ë¹í ìì를 ì´í´ë´
ìë¤. ê°ì´ ì ê³µëì§ ììì ëë§ í¨ìê° í¸ì¶ëë¯ë¡, promptë í ë²ë§ í¸ì¶ë©ëë¤.
// nameì promptë§ ì¤íë¨
let [surname = prompt('ì±ì ì
ë ¥íì¸ì.'), name = prompt('ì´ë¦ì ì
ë ¥íì¸ì.')] = ["ê¹"];
alert(surname); // ê¹ (ë°°ì´ìì ë°ìì¨ ê°)
alert(name); // promptìì ë°ìì¨ ê°
ê°ì²´ ë¶í´í기
구조 ë¶í´ í ë¹ì¼ë¡ ê°ì²´ë ë¶í´í ì ììµëë¤.
기본 문ë²ì ë¤ìê³¼ ê°ìµëë¤.
let {var1, var2} = {var1:â¦, var2:â¦}
í ë¹ ì°ì°ì ì°ì¸¡ì ë¶í´íê³ ì íë ê°ì²´ë¥¼, ì¢ì¸¡ì ììíë ê°ì²´ íë¡í¼í°ì 'í¨í´âì ë£ìµëë¤. ë¶í´íë ¤ë ê°ì²´ íë¡í¼í°ì í¤ ëª©ë¡ì í¨í´ì¼ë¡ ì¬ì©íë ìì를 ì´í´ë´ ìë¤.
ìì:
let options = {
title: "Menu",
width: 100,
height: 200
};
let {title, width, height} = options;
alert(title); // Menu
alert(width); // 100
alert(height); // 200
íë¡í¼í° options.titleê³¼ options.width, options.heightì ì ì¥ë ê°ì´ ììíë ë³ìì í ë¹ë ê²ì íì¸í ì ììµëë¤. ì°¸ê³ ë¡ ììë ì¤ìíì§ ììµëë¤. ìëì ê°ì´ ìì±í´ë ì ììì ëì¼íê² ëìí©ëë¤.
// let {...} ìì ììê° ë°ëì´ë ëì¼íê² ëìí¨
let {height, width, title} = { title: "Menu", height: 200, width: 100 }
í ë¹ ì°ì°ì ì¢ì¸¡ì ì¢ ë ë³µì¡í í¨í´ì´ ì¬ ìë ììµëë¤. ë¶í´íë ¤ë ê°ì²´ì íë¡í¼í°ì ë³ìì ì°ê²°ì ìíë ëë¡ ì¡°ì í ìë ììµëë¤.
ê°ì²´ íë¡í¼í°ë¥¼ íë¡í¼í° í¤ì ë¤ë¥¸ ì´ë¦ì ê°ì§ ë³ìì ì ì¥í´ë´
ìë¤. options.width를 wë¼ë ë³ìì ì ì¥íë ìì¼ë¡ ë§ì´ì£ . ì¢ì¸¡ í¨í´ì ì½ë¡ (:)ì ì¬ì©íë©´ ìíë 목í를 ë¬ì±í ì ììµëë¤.
let options = {
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
ì½ë¡ ì 'ë¶í´íë ¤ë ê°ì²´ì íë¡í¼í°: 목í ë³ìâì ê°ì ííë¡ ì¬ì©í©ëë¤. ì ìììì íë¡í¼í° width를 ë³ì wì, íë¡í¼í° height를 ë³ì hì ì ì¥íìµëë¤. íë¡í¼í° titleì ëì¼í ì´ë¦ì ê°ì§ ë³ì titleì ì ì¥ë©ëë¤.
íë¡í¼í°ê° ìë ê²½ì°ë¥¼ ëë¹íì¬ =ì ì¬ì©í´ 기본ê°ì ì¤ì íë ê²ë ê°ë¥í©ëë¤. ìëì ê°ì´ ë§ì´ì£ .
let options = {
title: "Menu"
};
let {width = 100, height = 200, title} = options;
alert(title); // Menu
alert(width); // 100
alert(height); // 200
ë°°ì´ í¹ì í¨ìì 매ê°ë³ììì íë ê²ì²ë¼ ê°ì²´ìë ííìì´ë í¨ì í¸ì¶ì 기본ê°ì¼ë¡ í ë¹í ì ììµëë¤. ë¬¼ë¡ ííìì´ë í¨ìë ê°ì´ ì ê³µëì§ ììì ë íê° í¹ì ì¤íëê² ì£ .
ìë ìì를 ì¤ííë©´ width ê°ë§ 물ì´ë³´ê³ title ê°ì 물ì´ë³´ì§ ììµëë¤.
let options = {
title: "Menu"
};
let {width = prompt("width?"), title = prompt("title?")} = options;
alert(title); // Menu
alert(width); // prompt ì°½ì ì
ë ¥í ê°
ì½ë¡ ê³¼ í ë¹ ì°ì°ì를 ëìì ì¬ì©í ìë ììµëë¤.
let options = {
title: "Menu"
};
let {width: w = 100, height: h = 200, title} = options;
alert(title); // Menu
alert(w); // 100
alert(h); // 200
íë¡í¼í°ê° ë§ì ë³µì¡í ê°ì²´ìì ìíë ì ë³´ë§ ë½ìì¤ë ê²ë ê°ë¥í©ëë¤.
let options = {
title: "Menu",
width: 100,
height: 200
};
// titleë§ ë³ìë¡ ë½ìë´ê¸°
let { title } = options;
alert(title); // Menu
ëë¨¸ì§ í¨í´ ââ¦â
ë¶í´íë ¤ë ê°ì²´ì íë¡í¼í° ê°ìê° í ë¹íë ¤ë ë³ìì ê°ìë³´ë¤ ë§ë¤ë©´ ì´ë¨ê¹ì? 'ë머ì§â를 ì´ëê°ì í ë¹íë©´ ëì§ ìê² ëë ìê°ì´ ë¤ì§ ìì¼ìëì?
ëë¨¸ì§ í¨í´(rest pattern)ì ì¬ì©íë©´ ë°°ì´ìì íë ê²ì²ë¼ ëë¨¸ì§ íë¡í¼í°ë¥¼ ì´ëê°ì í ë¹íë ê² ê°ë¥í©ëë¤. ì°¸ê³ ë¡ ëª¨ë ë¸ë¼ì°ì ë ëë¨¸ì§ í¨í´ì ì§ìíì§ë§, IE를 ë¹ë¡¯í ëªëª 구ì ë¸ë¼ì°ì ë ëë¨¸ì§ í¨í´ì ì§ìíì§ ìì¼ë¯ë¡ 주ìí´ì ì¬ì©í´ì¼ í©ëë¤. ë¬¼ë¡ ë°ë²¨(Babel)ì ì´ì©íë©´ ëì§ë§ì.
ëë¨¸ì§ í¨í´ì ìì를 ì´í´ë´ ìë¤.
let options = {
title: "Menu",
height: 200,
width: 100
};
// title = ì´ë¦ì´ titleì¸ íë¡í¼í°
// rest = ëë¨¸ì§ íë¡í¼í°ë¤
let {title, ...rest} = options;
// titleì "Menu", restì {height: 200, width: 100}ì´ í ë¹ë©ëë¤.
alert(rest.height); // 200
alert(rest.width); // 100
let ìì´ ì¬ì©í기ì§ê¸ê¹ì§ í ë¹ ì°ì° let {â¦} = {â¦} ììì ë³ìë¤ì ì ì¸íììµëë¤. letì¼ë¡ ìë¡ì´ ë³ì를 ì ì¸íì§ ìê³ ê¸°ì¡´ì ìë ë³ìì ë¶í´í ê°ì í ë¹í ìë ìëë°, ì´ëë 주ìí ì ì´ ììµëë¤.
ì못ë ì½ë:
let title, width, height;
// SyntaxError: Unexpected token '=' ì´ë¼ë ìë¬ê° ìë«ì¤ìì ë°ìí©ëë¤.
{title, width, height} = {title: "Menu", width: 200, height: 100};
ìë°ì¤í¬ë¦½í¸ë ííì ìì ìì§ ìì¼ë©´ì 주ì ì½ë íë¦ ìì ìë {...}를 ì½ë ë¸ë¡ì¼ë¡ ì¸ìí©ëë¤. ì½ë ë¸ë¡ì 본ë ì©ëë ìëì ê°ì´ 문(statement)ì 묶ë ê²ì
ëë¤.
{
// ì½ë ë¸ë¡
let message = "Hello";
// ...
alert( message );
}
ì쪽 ìììì 구조 ë¶í´ í ë¹ì ìí´ ì¬ì©í {...}를 ìë°ì¤í¬ë¦½í¸ê° ì½ë ë¸ë¡ì¼ë¡ ì¸ìí´ì ìë¬ê° ë°ìíììµëë¤.
ìë¬ë¥¼ í´ê²°íë ¤ë©´ í ë¹ë¬¸ì ê´í¸(...)ë¡ ê°ì¸ ìë°ì¤í¬ë¦½í¸ê° {...}를 ì½ë ë¸ë¡ì´ ìë ííìì¼ë¡ í´ìíê² íë©´ ë©ëë¤.
let title, width, height;
// ìë¬ê° ë°ìíì§ ììµëë¤.
({title, width, height} = {title: "Menu", width: 200, height: 100});
alert( title ); // Menu
ì¤ì²© 구조 ë¶í´
ê°ì²´ë ë°°ì´ì´ ë¤ë¥¸ ê°ì²´ë ë°°ì´ì í¬í¨íë ê²½ì°, ì¢ ë ë³µì¡í í¨í´ì ì¬ì©íë©´ ì¤ì²© ë°°ì´ì´ë ê°ì²´ì ì 보를 ì¶ì¶í ì ììµëë¤. ì´ë¥¼ ì¤ì²© 구조 ë¶í´(nested destructuring)ë¼ê³ ë¶ë¦ ëë¤.
ìë ìììì ê°ì²´ optionsì size íë¡í¼í° ê°ì ë ë¤ë¥¸ ê°ì²´ì
ëë¤. items íë¡í¼í°ë ë°°ì´ì ê°ì¼ë¡ ê°ì§ê³ ììµëë¤. ëì
ì°ì°ì ì¢ì¸¡ì í¨í´ì ì 보를 ì¶ì¶íë ¤ë ê°ì²´ optionsì ê°ì 구조를 ê°ì¶ê³ ììµëë¤.
let options = {
size: {
width: 100,
height: 200
},
items: ["Cake", "Donut"],
extra: true
};
// ì½ë를 ì¬ë¬ ì¤ì ê±¸ì³ ìì±í´ ìëíë ë°ë¥¼ ëª
íí ëë¬ë
let {
size: { // sizeë ì¬ê¸°,
width,
height
},
items: [item1, item2], // itemsë ì¬ê¸°ì í ë¹í¨
title = "Menu" // ë¶í´íë ¤ë ê°ì²´ì title íë¡í¼í°ê° ìì¼ë¯ë¡ 기본ê°ì ì¬ì©í¨
} = options;
alert(title); // Menu
alert(width); // 100
alert(height); // 200
alert(item1); // Cake
alert(item2); // Donut
extra(í ë¹ ì°ì°ì ì¢ì¸¡ì í¨í´ìë ìì)를 ì ì¸í options ê°ì²´ì 모ë íë¡í¼í°ê° ììíë ë³ìì í ë¹ëììµëë¤.
ë³ì width, height, item1, item2ì ìíë ê°ì´, titleì 기본ê°ì´ ì ì¥ëìë¤ì.
ê·¸ë°ë° ì ìììì sizeì items ì ì© ë³ìë ìë¤ë ì ì ì ìíì기 ë°ëëë¤. ì ì© ë³ì ëì ì°ë¦¬ë sizeì items ìì ì 보를 ë³ìì í ë¹íììµëë¤.
ëëí í¨ì 매ê°ë³ì
í¨ìì 매ê°ë³ìê° ë§ìë° ì´ì¤ ìë¹ìë ì íì ì¼ë¡ ì°ì´ë ê²½ì°ê° ì¢ ì¢ ììµëë¤. ì¬ì©ì ì¸í°íì´ì¤ì ì°ê´ë í¨ììì ì´ë° ìí©ì ì주 ë³¼ ì ìì£ . ë©ë´ ìì±ì ê´ì¬íë í¨ìê° ìë¤ê³ í´ ë´ ìë¤. ë©ë´ì ëë¹, ëì´, ì 목, í목 리ì¤í¸ ë±ì´ íìí기 ë문ì ì´ ì ë³´ë 매ê°ë³ìë¡ ë°ìµëë¤.
먼ì 리í©í ë§ ì ì ë©ë´ ìì± í¨ì를 ì´í´ë³´ê² ìµëë¤.
function showMenu(title = "Untitled", width = 200, height = 100, items = []) {
// ...
}
ì´ë ê² í¨ì를 ìì±íë©´ ë겨주ë ì¸ìì ììê° íë ¤ 문ì ê° ë°ìí ì ììµëë¤. 문ìíê° ì ëì´ìë¤ë©´ IDEê° ìì를 íë¦¬ì§ ìê² ëìì 주긴 íê² ì§ë§ ë§ì´ì£ . ì´ ì¸ìë ëë¶ë¶ì 매ê°ë³ìì 기본ê°ì´ ì¤ì ëì´ ìì´ êµ³ì´ ì¸ì를 ëê²¨ì£¼ì§ ììë ëë ê²½ì°ì 문ì ê° ë°ìí©ëë¤.
ìë ì½ë를 ì´í´ë³´ìì£ . ì´ë¤ ëëì´ ëìëì?
// 기본ê°ì ì¬ì©í´ë ê´ì°®ì ê²½ì° ìëì ê°ì´ undefined를 ì¬ë¬ ê° ë겨ì¤ì¼ í©ëë¤.
showMenu("My Menu", undefined, undefined, ["Item1", "Item2"])
꽤 ì§ì ë¶í´ ë³´ì´ë¤ì. 매ê°ë³ìê° ë§ìì§ìë¡ ê°ë ì±ì ë ë¨ì´ì§ ê²ëë¤.
구조 ë¶í´ë ì´ë´ ë 구ì¸ì£¼ê° ë©ëë¤.
매ê°ë³ì 모ë를 ê°ì²´ì 모ì í¨ìì ì ë¬í´, í¨ìê° ì ë¬ë°ì ê°ì²´ë¥¼ ë¶í´íì¬ ë³ìì í ë¹íê³ ìíë ìì ì ìíí ì ìëë¡ í¨ì를 리í©í ë§í´ ë´ ìë¤.
// í¨ìì ì ë¬í ê°ì²´
let options = {
title: "My menu",
items: ["Item1", "Item2"]
};
// ëëí í¨ìë ì ë¬ë°ì ê°ì²´ë¥¼ ë¶í´í´ ë³ìì ì¦ì í ë¹í¨
function showMenu({title = "Untitled", width = 200, height = 100, items = []}) {
// title, items â ê°ì²´ optionsìì ê°ì ¸ì´
// width, height â 기본ê°
alert( `${title} ${width} ${height}` ); // My Menu 200 100
alert( items ); // Item1, Item2
}
showMenu(options);
ì¤ì²© ê°ì²´ì ì½ë¡ ì ì¡°í©íë©´ ì¢ ë ë³µì¡í 구조 ë¶í´ë ê°ë¥í©ëë¤.
let options = {
title: "My menu",
items: ["Item1", "Item2"]
};
function showMenu({
title = "Untitled",
width: w = 100, // widthë wì,
height: h = 200, // heightë hì,
items: [item1, item2] // itemsì 첫 ë²ì§¸ ììë item1ì, ë ë²ì§¸ ììë item2ì í ë¹í¨
}) {
alert( `${title} ${w} ${h}` ); // My Menu 100 200
alert( item1 ); // Item1
alert( item2 ); // Item2
}
showMenu(options);
ì´ë ê² ëëí í¨ì 매ê°ë³ì 문ë²ì 구조 ë¶í´ í ë¹ ë¬¸ë²ê³¼ ëì¼í©ëë¤.
function({
incomingProperty: varName = defaultValue
...
})
매ê°ë³ìë¡ ì ë¬ë ê°ì²´ì íë¡í¼í° incomingPropertyë varNameì í ë¹ëê² ì£ . ë§ì½ ê°ì´ ìë¤ë©´ defaultValueê° ê¸°ë³¸ê°ì¼ë¡ ì¬ì©ë ê²ëë¤.
ì°¸ê³ ë¡ ì´ë ê² í¨ì 매ê°ë³ì를 구조 ë¶í´í ë, ë°ëì ì¸ìê° ì ë¬ëë¤ê³ ê°ì ëê³ ì¬ì©ëë¤ë ì ì ì ìíì기 ë°ëëë¤. 모ë ì¸ìì 기본ê°ì í ë¹í´ ì£¼ë ¤ë©´ ë¹ ê°ì²´ë¥¼ ëª ìì ì¼ë¡ ì ë¬í´ì¼ í©ëë¤.
showMenu({}); // 모ë ì¸ìì 기본ê°ì´ í ë¹ë©ëë¤.
showMenu(); // ìë¬ê° ë°ìí ì ììµëë¤.
ì´ ë¬¸ì 를 ìë°©íë ¤ë©´ ë¹ ê°ì²´ {}를 ì¸ì ì ì²´ì 기본ê°ì¼ë¡ ë§ë¤ë©´ ë©ëë¤.
function showMenu({ title = "Menu", width = 100, height = 200 } = {}) {
alert( `${title} ${width} ${height}` );
}
showMenu(); // Menu 100 200
ì´ë ê² ì¸ì ê°ì²´ì 기본ê°ì ë¹ ê°ì²´ {}ë¡ ì¤ì íë©´ ì´ë¤ ê²½ì°ë ë¶í´í ê²ì´ ì겨ì í¨ìì ì¸ì를 íëë ì ë¬íì§ ììë ìë¬ê° ë°ìíì§ ììµëë¤.
ìì½
-
구조 ë¶í´ í ë¹ì ì¬ì©íë©´ ê°ì²´ë ë°°ì´ì ë³ìë¡ ì°ê²°í ì ììµëë¤.
-
ê°ì²´ ë¶í´í기:
let {prop : varName = default, ...rest} = objectobjectì íë¡í¼í°
propì ê°ì ë³ìvarNameì í ë¹ëëë°, objectì propì´ ìì¼ë©´defaultê°varNameì í ë¹ë©ëë¤.ì°ê²°í ë³ìê° ìë ëë¨¸ì§ íë¡í¼í°ë¤ì ê°ì²´
restì ë³µì¬ë©ëë¤. -
ë°°ì´ ë¶í´í기:
let [item1 = default, item2, ...rest] = arrayarrayì 첫 ë²ì§¸ ììë
item1ì, ë ë²ì§¸ ììë ë³ìitem2ì í ë¹ëê³ , ì´ì´ì§ë ëë¨¸ì§ ììë¤ì ë°°ì´restì ì¥ë©ëë¤. -
í ë¹ ì°ì°ì ì¢ì¸¡ì í¨í´ê³¼ ì°ì¸¡ì êµ¬ì¡°ê° ê°ì¼ë©´ ì¤ì²© ë°°ì´ì´ë ê°ì²´ê° ìë ë³µì¡í 구조ììë ìíë ë°ì´í°ë¥¼ ë½ìë¼ ì ììµëë¤.
ëê¸
<code>í그를, ì¬ë¬ ì¤ë¡ 구ì±ë ì½ë를 ì½ì íê³ ì¶ë¤ë©´<pre>í그를 ì´ì©íì¸ì. 10ì¤ ì´ìì ì½ëë plnkr, JSBin, codepen ë±ì ìëë°ì¤ë¥¼ ì¬ì©íì¸ì.