๊ตฌ์กฐ ๋ถํด ํ ๋น
๐ก ๊ตฌ์กฐ ๋ถํด ํ ๋น์ด ๋ญ๊ฐ์?
๐ก๊ตฌ์กฐ ๋ถํด ํ ๋น์ ํฌ๊ฒ ์ด๋ค ์ข ๋ฅ๊ฐ ์๋์?
Q.๊ตฌ์กฐ ๋ถํด ํ ๋น (๋์คํธ๋ญ์ฒ๋ง ํ ๋น)
๋ฐฐ์ด์ด๋ ๊ฐ์ฒด์ ์์ฑ์ ํด์ฒดํ์ฌ ๊ทธ ๊ฐ์ ๊ฐ๋ณ ๋ณ์์ ๋ด์ ์ ์๊ฒ ํ๋ JavaScript ํํ์ - MDN
- ๊ตฌ์กฐํ๋ ๋ฐฐ์ด๊ณผ ๊ฐ์ ์ดํฐ๋ฌ๋ธ ๋๋ ๊ฐ์ฒด๋ฅผ destructuring(๋น๊ตฌ์กฐํ, ๊ตฌ์กฐ ํ๊ดด)ํ์ฌ 1๊ฐ ์ด์์ ๋ณ์์ ๊ฐ๋ณ์ ์ผ๋ก ํ ๋นํ๋ ๊ฒ
๐ง iterable?
๋ฐ๋ณต ๊ฐ๋ฅํ ๊ฐ์ฒด(iterable object) ํน์ ์ค์ฌ์ iterable ๋ด์ฅ๋ ์์ฑ์ ์ค iterable ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด๋ด๋ ์์ฑ์
- String
- Array
- TypedArray
- Map
- Set
Q.๊ตฌ์กฐ ๋ถํด ํ ๋น ์ ์ฐ์ด์ฃ ?
- ๋ฐฐ์ด๊ณผ ๊ฐ์ ์ดํฐ๋ฌ๋ธ ๋๋ ๊ฐ์ฒด ์ดํฐ๋ด์์ ํ์ํ ๊ฐ๋ง ์ถ์ถํ์ฌ ๋ณ์์ ํ ๋น ์ ์ ์ฉํ๊ธฐ ๋๋ฌธ
Q.๊ตฌ์กฐ ๋ถํด ํ ๋น์ ํฌ๊ฒ ์ด๋ค ์ข ๋ฅ๊ฐ ์๋์?
๐ก ๋ฐฐ์ด ๊ตฌ์กฐ ๋ถํด ํ ๋น
๐ก ๊ฐ์ฒด ๊ตฌ์กฐ ๋ถํด ํ ๋น
1. ๋ฐฐ์ด ๊ตฌ์กฐ ๋ถํด ํ ๋น
๋ฐฐ์ด๊ณผ ๊ฐ์ ์ดํฐ๋ฌ๋ธ์์ ํ์ํ ์์๋ง ์ถ์ถํด ๋ณ์์ ํ ๋นํ๊ณ ์ถ์ ๋ ์ ์ฉ
*๏ธโฃ ์ฌ์ฉ ๋ฐฉ๋ฒ
//ES5
var arr = [1,2,3];
var one = arr[0];
var two = arr[1];
var three = arr[2];
console.log(one, two, three); //1 2 3
- ๋ฐฐ์ด์ ๊ฐ ์์๋ฅผ ๋ฐฐ์ด๋ก๋ถํฐ ์ถ์ถํด 1๊ฐ ์ด์์ ๋ณ์์ ํ ๋น
- ๋ฐฐ์ด ๋์คํธ๋ญ์ฒ๋ง ํ ๋น์ ๋์(ํ ๋น๋ฌธ์ ์ฐ๋ณ)์ ์ดํฐ๋ฌ๋ธ ํด์ผํ๋ฉฐ, ํ ๋น ๊ธฐ์ค์ ๋ฐฐ์ด์ ์ธ๋ฑ์ค (์ฆ, ์์๋๋ก ํ ๋น)
const arr = [1,2,3];
//ES6 ๋ฐฐ์ด ๋์คํธ๋ญ์ฒ๋ง ํ ๋น
//๋ณ์ one, two, three๋ฅผ ์ ์ธํ๊ณ ๋ฐฐ์ด arr๋ฅผ ๋์คํธ๋ญ์ฒ๋ง ํ์ฌ ํ ๋น
//์ด๋ ํ ๋น ๊ธฐ์ค์ ๋ฐฐ์ด์ ์ธ๋ฑ์ค
const [one,two,three] = arr;
console.log(one,two,three); //1 2 3
- ํ ๋น ์ฐ์ฐ์ ์ผ์ชฝ์ ๊ฐ์ ํ ๋น ๋ฐ์ ๋ณ์๋ฅผ ์ ์ธํด์ผ ํ๋ฉฐ, ์ด๋ ๋ณ์๋ฅผ ๋ฐฐ์ด ๋ฆฌํฐ๋ด ํํ๋ก ์ ์ธ
- ์ด๋ ์ฐ๋ณ์ ์ดํฐ๋ฌ๋ธ์ ํ ๋นํ์ง ์์ผ๋ฉด ์๋ฌ ๋ฐ์!
let x,y;
[x,y] = [1,2];
- ๋ฐฐ์ด ๋์คํธ๋ญ์ฒ๋ง ํ ๋น์ ๋ณ์ ์ ์ธ๋ฌธ์ ์ ์ธ๊ณผ ํ ๋น์ ๋ถ๋ฆฌํ ์ ์์
- ๋จ, ์ด๋ const ํค์๋๋ ๋ณ์๋ฅผ ์ ์ธํ ์ ์์ผ๋ฏ๋ก ๊ถ์ฅ x
const [a,b] = [1,2];
console.log(a,b) //1,2
const [c,d] = [1];
console.log(c,d) //1 undefined
const [e,f] = [1,2,3];
console.log(e,f); //1 2
const [g, ,h] = [1,2,3];
console.log(g,h) //1 3
- ๋ฐฐ์ด ๋์คํธ๋ญ์ฒ๋ง ํ ๋น์ ๊ธฐ์ค์ ๋ฐฐ์ด์ ์ธ๋ฑ์ค์ด๋ฏ๋ก ์์๋๋ก ํ ๋น
- ์ด๋ ๋ณ์์ ๊ฐ์์ ์ดํฐ๋ฌ๋ธ์ ์์ ๊ฐ์๊ฐ ๋ฐ๋์ ์ผ์นํ ํ์๋ ์์
//๊ธฐ๋ณธ๊ฐ
const [a,b,c = 3] = [1,2];
console.log(a,b,c); //1 2 3
//๊ธฐ๋ณธ๊ฐ ๋ณด๋ค ํ ๋น๋ ๊ฐ์ด ์ฐ์
const [e,f=10,g=3] = [1,2];
console.log(e,f,g); //1,2,3
var h,i;
[h=4,i=7] = [1];
console.log(h); //1
console.log(i); //7
- ๋ฐฐ์ด ๋์คํธ๋ญ์ฒ๋ง ํ ๋น์ ์ํ ๋ณ์์ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํ ์ ์์
2. ๊ฐ์ฒด ๊ตฌ์กฐ ๋ถํด ํ ๋น
๊ฐ์ฒด ๋์คํธ๋ญ์ฒ๋ง ํ ๋น์ ๊ฐ์ฒด์์ ํ๋กํผํฐ ํค๋ก ํ์ํ ํ๋กํผํฐ ๊ฐ๋ง ์ถ์ถํด ๋ณ์์ ํ ๋นํ๊ณ ์ถ์ ๋ ์ ์ฉ
*๏ธโฃ์ฌ์ฉ ๋ฐฉ๋ฒ
๊ฐ์ฒด์ ๊ฐ ํ๋กํผํฐ๋ฅผ ๊ฐ์ฒด๋ก๋ถํฐ ์ถ์ถํ์ฌ 1๊ฐ ์ด์์ ๋ณ์์ ํ ๋น
์ด๋ ๊ฐ์ฒด ๋์คํธ๋ญ์ฒ๋ง ํ ๋น์ ๋์(ํ ๋น๋ฌธ ์ฐ๋ณ!)์ ๊ฐ์ฒด์ฌ์ผ ํ๋ฉฐ, ํ ๋น ๊ธฐ์ค์ ํ๋กํผํฐ ํค
(์ฆ, ์์๋ ์๋ฏธ๊ฐ ์์ผ๋ฉฐ ์ ์ธ๋ ๋ณ์์ ์ด๋ฆ๊ณผ ํ๋กํผํฐ ํค๊ฐ ์ผ์นํ๋ฉด ํ ๋น!)
//ES6 ๊ฐ์ฒด ๋์คํธ๋ญ์ฒ๋ง ํ ๋น
const user = { firstName: 'Iseo', lastName: 'Yu'};
//๋ณ์ lastName, firstName์ ์ ์ธํ๊ณ user ๊ฐ์ฒด๋ฅผ ๋์คํธ๋ญ์ฒ๋ง ํ์ฌ ํ ๋น
//์ด๋ **ํ๋กํผํฐ ํค๋ฅผ ๊ธฐ์ค์ผ๋ก ๋์คํธ๋ญ์ฒ๋ง ํ ๋น**์ด ์ด๋ค์ง!(์์๋ ์๋ฏธx)
const { lastName,firstName } = user;
console.log(firstName,lastName); //Iseo Yu
const {lastName, firstName} = {firstName:'Iseo',lastName:'Yu'};
- ๋ฐฐ์ด ๋์คํธ๋ญ์ฒ๋ง ํ ๋น๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ฐ์ฒด ๋์คํธ๋ญ์ฒ๋ง ํ ๋น์ ์ํด์๋ ํ ๋น ์ฐ์ฐ์ ์ผ์ชฝ์ ํ๋กํผํฐ ๊ฐ์ ํ ๋น ๋ฐ์ ๋ณ์๋ก ์ ์ธ! (๋ณ์๋ฅผ ๊ฐ์ฒด ๋ฆฌํฐ๋ด ํํ๋ก ์ ์ธ)
- ์ฐ๋ณ์ ๊ฐ์ฒด ๋๋ ๊ฐ์ฒด๋ก ํ๊ฐ๋ ์ ์๋ ํํ์(๋ฌธ์์ด, ์ซ์, ๋ฐฐ์ด ๋ฑ)์ ํ ๋นํ์ง ์์ผ๋ฉด ์๋ฌ
//๋์น
const {lastName, firstName} = user;
const {lastName:lastName, firstName:firstName} = user;
- ๊ฐ์ฒด ๋ฆฌํฐ๋ด ํํ๋ก ์ ์ธํ ๋ณ์๋ lastName,firstNmae
- ํ๋กํผํฐ ์ถ์ฝ ํํ์ ํตํด ์ ์ธํ ๊ฒ
//ํ๋กํผํฐ ์ถ์ฝ(์์ฑ๋ช
์ถ์ฝ)
//๊ฐ์ฒด๋ฅผ ์ ์ํ ๋ key์ ํ ๋นํ๋ ๋ณ์์ ์ด๋ฆ์ด ๊ฐ์ผ๋ฉด ์์์ ๊ฐ์ด ์ถ์ฝ ๊ฐ๋ฅ
var books = ['Learning JS', 'Learning Python']
var magazines = ['Vogue', 'Science']
// ES5
var bookShop = {
books: books,
magazines: magazines,
}
console.log(bookShop)
////////////////////////////////////////////////////////
const books = ['Learning JS', 'Learning Python']
const magazines = ['Vogue', 'Science']
// ES6+
const bookShop = {
books,
magazines,
}
console.log(bookShop)
/*
{
books: ['Learning JS', 'Learning Python'],
magazines: ['Vogue', 'Science']
}
*/
const user = { firstName: 'Iseo', lastName:'Yu'};
//ํ๋กํผํฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋์คํธ๋ญ์ฒ๋ง ํ ๋น์ด ์ด๋ค์ง
//ํ๋กํผํฐ ํค๊ฐ lastName์ธ ํ๋กํผํฐ ๊ฐ์ ln์ ํ ๋นํ๊ณ ,
//ํ๋กํผํฐ ํค๊ฐ fistName์ธ ํ๋กํผํฐ ๊ฐ์ fn์ ํ ๋นํ๋ค.
const {lastName: ln, firstName: fn} = user;
console.log(fn,ln); //Iseo Yu
- ๊ฐ์ฒด์ ํ๋กํผํฐ ํค์ ๋ค๋ฅธ ๋ณ์ ์ด๋ฆ์ผ๋ก ๊ฐ์ ํ ๋น๋ฐ์ผ๋ ค๋ฉด ์์ ๊ฐ์ด ๋ณ์๋ฅผ ์ ์ธํ๋ฉด ๋จ
๋ํ, ๋ฐฐ์ด ๋์คํธ๋ญ์ฒ๋ง์ฒ๋ผ ๊ฐ์ฒด ๋์คํธ๋ญ์ฒ๋ง ํ ๋น์ ์ํ ๋ณ์์ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ๊ฐ๋ฅ
const {firstName = 'Iseo', lastName} = {lastName:'Yu'};
console.log(firstName,lastName)//Iseo Yu
const {firstName:fn = 'Iseo',lastName:ln} = {lastName:'Yu'};
console.log(fn,ln); //Iseo Yu
๊ฐ์ฒด ๋์คํธ๋ญ์ฒ๋ง ํ ๋น์ ๊ฐ์ฒด๋ฅผ ์ธ์๋ก ์ ๋ฌ ๋ฐ๋ ํจ์์ ๋งค๊ฐ๋ณ์์๋ ์ฌ์ฉ ๊ฐ๋ฅ
function getUserInfo(user){
console.log(`์ด๋ฆ์ ${user.name}์ด๊ณ ๋์ด๋ ${user.age}, ์ง์
์ ${user.job}์
๋๋ค.`);
}
getUserInfo({name:"์ด์", age:28, job:"์์"});
//์ด๋ฆ์ ์ด์์ด๊ณ ๋์ด๋ 28, ์ง์
์ ์์์
๋๋ค.
but, user๊ฐ ๋ฐ๋ณต ๋๋ ๊ฑธ ๋ณผ ์ ์์
๋งค๊ฐ๋ณ์ user์ ๊ฐ์ฒด ๋์คํธ๋ญ์ฒ๋ง ํ ๋น์ ์ฌ์ฉ ์ ๋ค์์ฒ๋ผ ๊ฐ๋ ์ฑ ์๊ณ ๊ฐํธํ ์ฝ๋๋ก ํํ ๊ฐ๋ฅ
function getUserInfo({ name, age, job}){
console.log(`์ด๋ฆ์ ${name}์ด๊ณ ๋์ด๋ ${age}, ์ง์
์ ${job}์
๋๋ค.`);
}
getUserInfo({name:"์ด์", age:28, job:"์์"});
//์ด๋ฆ์ ์ด์์ด๊ณ ๋์ด๋ 28, ์ง์
์ ์์์
๋๋ค.
'Language > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] API (0) | 2023.01.16 |
---|---|
[JavaScript] AJAX & JSON (0) | 2023.01.15 |
[FE/JavaScript] strict mode (0) | 2022.06.27 |
[FE/JavaScript]this (0) | 2022.06.23 |
[FE/JavaScript] ์์ฑ์ ํจ์์ ์ํ ๊ฐ์ฒด ์์ฑ (0) | 2022.06.13 |
๋๊ธ