1. ๊ตฌ์กฐ ๋ถํด ํ ๋น์ด๋?
๋ง์ฝ ์ฐ๋ฆฌ๊ฐ ๋ฐฐ์ด์์ ์์๋ฅผ ์ผ์ผํ ๋นผ์ ๋ณ์์ ์ง์ด ๋ฃ๋๋ค๋ฉด, ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํ ๊ฒ์ด๋ค.
const arr = [1,2,3]
const a = arr[0]
const b = arr[1]
const c = arr[2]
JS์์๋ ์ ๊ณผ์ ์ ๊ฐ๋จํ๊ฒ ํ ์ค์ ์ฝ๋๋ก ์ ์ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ค. ์ด๋ฅผ ๊ตฌ์กฐ ๋ถํด ํ ๋น์ด๋ผ๊ณ ํ๋ค.
๋ฐฐ์ด์ด๋ ๊ฐ์ฒด์ ์์๋ค์ ์ฐข์ด์ ๋ณ์ ํ๋ ํ๋์ ๋ฃ์ด์ฃผ๋ ๋ฐฉ์์ ๋งํ๋ค.
2. ๋ฐฐ์ด์์์ ๊ตฌ์กฐ ๋ถํด
(1) ๊ธฐ๋ณธํ
// ๋ฐฐ์ด ์ ์ธ
const arr = [1,2,3]
// ๊ตฌ์กฐ ๋ถํด ํ ๋น ์ด์ฉ: ๋ณ์ a, b, c์ ๊ฐ๊ฐ 1, 2, 3์ด ์ฐจ๋ก๋ก ๋ค์ด๊ฐ๋ค.
const [a,b,c] = arr
console.log(a,b,c)
// 1 2 3์ด ์ฐํ๋ค.
์์ const [a,b,c] = arr ์ a,b,c๋ผ๋ ๋ณ์ ์ ์ธ๊ณผ ๋์์ ๋ฐฐ์ด์ ์์๋ค์ ์ฐข์ด์ ๋ฃ์ ๊ฒ์ด๋ค.
๋ง์ฝ ์ด๋ฏธ ์ ์ธ๋ ๋ณ์๋ฅผ ์ด์ฉํ๋ ๊ฒฝ์ฐ๋ผ๋ฉด ๋ฐ๊ณผ ๊ฐ์ด ์ฐ๋ฉด ๋๋ค.
let a = 0
let b = 0
let c = 0
const arr = [1,2,3]
;[a,b,c] = arr
์ด ๊ฒฝ์ฐ ๊ฐ์ฒด ์ ์ธ๊ณผ ๊ตฌ์กฐ ๋ถํด ํ ๋น ์ฌ์ด์ ;์ ๋ฃ์ด์ค์ผ ํ๋ค.
์ฒซ๋ฒ์งธ ์์์ ๊ฒฝ์ฐ const๋ผ๋ ํค์๋ ๋์ ์ด ๋ ์ฌ์ด๊ฐ ๊ตฌ๋ถ์ด ๋์๋๋ฐ, ์ด์ ์ ์ธ๋ ๋ณ์๋ค์ ์ฌํ ๋นํ๋ฉด์ ํด๋น ํค์๋๊ฐ ์์ผ๋ฏ๋ก ๋ ์ฌ์ด๊ฐ ๊ตฌ๋ถ์ด ์๋๊ธฐ ๋๋ฌธ์ด๋ค.
๋ง์ฝ ; ๊ฐ ์์ผ๋ฉด node.js๋ ๋ค์๊ณผ ๊ฐ์ด ๋ฐ์๋ค์ธ๋ค.
const arr = [1,2,3][a,b,c] = arr
//arr์ ์ข
๊ตญ์ ๋ค์ arr์๊ฒ ํ ๋นํ๋ ๋ฌธ์ฅ์ด ๋์ด์ ๊ตฌ๋ฌธ ์ค๋ฅ๊ฐ ๋๋ค.
(2) ๋ง์ฝ ์์ ์ค ์ผ๋ถ๋ถ๋ง ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด
์์ ๊ฒฝ์ฐ์์ arr = [1,2,3] ์ค arr[1], arr[2]๋ง ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด ์ด๋ ๊ฒ ์ ์ผ๋ฉด ๋๋ค.
// ๋ฐฐ์ด ์ ์ธ
const arr = [1,2,3]
// 2,3๋ฒ ์์๋ง ์ฌ์ฉ ํ๊ณ ์ถ์ ๊ฒฝ์ฐ (์ ์ฐ๋ ๋ถ๋ถ์ ๋น์๋ฌ์ผ ํ๋ค.)
const [,b,c] = arr
console.log(b,c)
๋ง์ฝ arr[0], arr[1]๋ง ์ฌ์ฉํ๊ณ ์ถ์ ๊ฒฝ์ฐ
const [a,b,]= arr
(3) ...rest ์ด์ฉ
ํด๋น ๋ฌธ๋ฒ์ ์์์ ์ผ์ ๋ถ๋ถ๋ง ์ฐ๊ณ ๊ทธ ํ ๋๋จธ์ง ์์๋ค์ ํ๋ฒ์ ๋น ๋ฐฐ์ด ์์ ๋ฃ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค.
const arr = [1,2,3]
// ...rest์๋ ๋๋จธ์ง ๋ฐฐ์ด๋ค์ด ๋ค์ด๊ฐ. (rest๋ ๋ค๋ฅธ ์ด๋ฆ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅ)
const [a, ...rest ] = arr
console.log(a,rest)
// 1 [2,3]์ผ๋ก ์ถ๋ ฅ๋จ
์ ๊ฐ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๋ผ ํ๋๋ฐ ๋ฌด์จ ์๋ฏธ์ธ์ง๋ ์์ง ๋ชจ๋ฅด๊ฒ ๋ค. ์ผ๋จ ...rest๋ผ๋ ์ด๋ฆ์ผ๋ก ์ธ์ฐ์.
(4) ๋ฐฐ์ด ๊ตฌ์กฐ ๋ถํด ํ ๋น์ ๋ฌธ์ ์
์์์ ๋ณด๋ค์ํผ, ๊ตฌ์กฐ ๋ถํด ํ ๋น์ด ์์๋ฅผ ํ ๋นํ๋ ๊ธฐ์ค์ ์์์ ์ธ๋ฑ์ค ์ด๋ค.
[1,2,3] ์ด๋ผ๋ ๊ฐ์ด ์ฐจ๋ก๋๋ก [a,b,c] ๋ณ์์ ๋ค์ด๊ฐ๋ค. (a= 1, b=2,c=3)
๊ทธ๋ผ ์ด์ ๋ฐฐ์ด์ด ๊ธธ์ด์ง ๊ฒฝ์ฐ๊ฐ ๋ฌธ์ ์ด๋ค.
๋ง์ฝ ์ธ๋ฑ์ค 8๋ฒ๋ง ๋ฐ์์ ์ฌ์ฉํ๊ณ ์ถ์ ๊ฒฝ์ฐ ๋ฐ๊ณผ ๊ฐ์ด ์จ์ผ ํ๋ค.
const arr2 = [1,2,3,4,5,6,7,8,9]
const[,,,,,,,n] = arr2
์ด์ฒ๋ผ ๋ฐฐ์ด์ด ๊ธธ์ด์ง์๋ก ๊ตฌ์กฐ ๋ถํด ํ ๋น์ ์ฐ๊ธฐ ์ด๋ ต๋ค.
3. ๊ฐ์ฒด์์์ ๊ตฌ์กฐ ๋ถํด
(1) ๊ธฐ๋ณธํ
๊ฐ์ฒด์์๋ ๊ตฌ์กฐ ๋ถํด ํ ๋น์ ์ธ ์ ์๋ค.
๋ง์ฝ ๊ตฌ์กฐ ๋ถํด ํ ๋น์ ์ ์ฐ๊ณ ๊ฐ์ฒด ๋ฉค๋ฒ๋ค์ ์ผ์ผํ ๋ณ์ ์์ ๋ฃ์ผ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์จ์ผ ํ๋ค.
const obj = {
a: 1,
b: 2,
c: 3,
y: 100
}
const a = obj.a
const b = obj.b
const c = obj.c
์ด์ ๊ตฌ์กฐ ๋ถํด ํ ๋น์ผ๋ก ๊ฐํธํ ์จ๋ณด์.
const {a,b,c} = obj
๋ค์๊ณผ ๊ฐ์ด ์ฐ๋ฉด ๋๋ค.
(2) ๋ฐฐ์ด ๊ตฌ์กฐ ๋ถํด ํ ๋น๊ณผ์ ์ฐจ์ด์
๋ฐฐ์ด์ ๊ฒฝ์ฐ ์์์ ์ธ๋ฑ์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฐ์ ๋ณ์์ ๋ถํด ํ ๋น ํ๋ค.
๊ฐ์ฒด์ ๊ฒฝ์ฐ ๊ฐ์ฒด ๋ฉค๋ฒ์ key ๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋ณ์์ value๋ฅผ ๋ถํด ํ ๋นํ๋ค.
์์์ ๋ณด๋ฉด ๊ฐ์ฒด์ ๊ฒฝ์ฐ ๋ถํด ํ ๋น ๋ฐ๋ ๋ณ์์ ์ด๋ฆ๊ณผ ๊ฐ์ฒด์ ๋ฉค๋ฒ key๋ค์ ์ด๋ฆ์ด ๊ฐ์ ๊ฒ์ ๋ณผ ์ ์๋ค. ์ด๋ ์ฐ์ฐ์ด ์๋๋ค.
๋ฐฐ์ด์์๋ ํ ๋น ๋ฐ๋ ๋ณ์์ ์ด๋ฆ์ ์ฌ์ฉ์ ๋ง์๋๋ก ์ง์ ํ ์ ์์์ง๋ง, ๊ฐ์ฒด์ ๊ฒฝ์ฐ ์๋๋ค. ๊ผญ key ๊ฐ๊ณผ ๊ฐ์ ์ด๋ฆ์ผ๋ก ํ ๋น ๋ฐ์์ผ ํ๋ค. ๋ณ์์๋ ๊ฐ์ ์ด๋ฆ์ key์ value๊ฐ ํ ๋น ๋๋ค.
const obj = {
a: 1,
b: 2,
c: 3,
y: 100
}
const {c, y} = obj
console.log(c,y)
// 3๊ณผ 100์ด ์ถ๋ ฅ๋จ.
๋ฐ๋ผ์ ํน์ ๋ฉค๋ฒ๋ง ํ ๋น ๋ฐ๊ณ ์ถ๋ค๋ฉด, ๊ทธ ๋ฉค๋ฒ ์ด๋ฆ๋ง ์ ์ด์ฃผ๋ฉด ๋๋ค.
(3) default ๊ฐ
๊ฐ์ฒด๋ฅผ ๊ตฌ์กฐ ๋ถํด ํ ๋น ๋ฐ์ผ๋ ค ํ๋๋ฐ, ๊ฐ์ฒด ์์ ๋ค์ฌ๋ค ๋ณผ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ์์ ์ ์๋ค.
์ด๋ ํ ๋น ๋ฐ์ผ๋ ค๋ ๋ณ์ ์ด๋ฆ์ด ๊ฐ์ฒด์ key ๊ฐ์ผ๋ก ์์ผ๋ฉด undefined๊ฐ ์ถ๋ ฅ๋๋ค.
๋ฐ๋ผ์ ํด๋น Error๋ฅผ ํผํ๊ธฐ ์ํด ๊ฐ์ฒด์ ํด๋น ๋ณ์ ์ด๋ฆ์ key๊ฐ ์์ ๊ฒฝ์ฐ default ๊ฐ์ ํด๋น ๋ณ์์ ๋ฃ์ด๋ผ๋ ๋ช ๋ น์ด ์กด์ฌํ๋ค. ์ด๊ฒ default ๊ฐ์ด๋ค.
const obj = {
a: 1,
b: 2,
c: 3,
y: 100
}
// default ๊ฐ -> ๊ฐ์ฒด์์ ์ฐ๋ฆฌ๊ฐ ๋ถ๋ฅด๋ ค๋ key ๊ฐ์ด ์์ ๊ฒฝ์ฐ ๋์ ์ถ๋ ฅ๋๋ ๊ฐ
const {x=4} = obj
console.log(x)
// 4 ์ถ๋ ฅ
๋ง์ฝ x: 333 ์ด๋ผ๋ ๊ฐ์ด ๊ฐ์ฒด์์ ์๋ค๋ฉด default ๊ฐ ๋์ 333์ด ์ถ๋ ฅ๋๋ค.
(4) ๋ณ์ ์ด๋ฆ ์ฌ ์ ์ธ
๋ณ์ ์ด๋ฆ์ ๋ฌด์กฐ๊ฑด ๊ฐ์ฒด์ key ๊ฐ์ผ๋ก ์จ์ผํ๋ค๋ ๊ฒ์ ์๋นํ ์ ์ฝ์ด๋ค. ์ด์ ํด๋น ๋ณ์์ด๋ฆ์ ๊ต์ฒดํ๋ ๋ฐฉ๋ฒ์ ์๋ ค์ฃผ๊ฒ ๋ค.
// const {key์ด๋ฆ: ๋ฐ๊ฟ ์ด๋ฆ} = ๊ฐ์ฒด์ด๋ฆ
const {e=32, a:heropy, y: ten = 10} = obj
console.log(e, a, y) // ๋ณ์ ์ด๋ฆ์ด ๋ฐ๋์๊ธฐ ๋๋ฌธ์ ๋ ์ด์ a, y๋ผ๋ ๋ณ์๋ ์์ผ๋ฏ๋ก ๋ณ์ ์์ ์๋ฌ๊ฐ ๋๋ค.
console.log(e, heropy, ten) // ์ ๋๋ก ์ถ๋ ฅ๋จ
(5) ...rest ์ด์ฉ
๊ฐ์ฒด์์์ rest ์ด์ฉ์ ๋ ์ฝ๋ค.
๋ฝ์์ ์ฐ๊ณ ์ถ์ ๋ด์ฉ๋ง ๋ฐ๋ก ์ฐ๊ณ ๋๋จธ์ง๋ ...rest๋ฅผ ์ฌ์ฉํด ๋ค๋ฅธ ๊ฐ์ฒด๋ก ๋ฌถ์ด์ค๋ค.
const { c, ...rest } = obj
console.log(c, rest)
๋๋จธ์ง ๋ค๋ฅธ ๊ฐ์ฒด๋ก ๋ฌถ์
**JS์์ ;์ ์จ์ผํ๋ ๋
; ๋ java์์๋ ๋ฌธ์ฅ์ ๋๋งบ์์ ๋ํ๋์๋ค.
ํ์ง๋ง js์์๋ ๋ฌธ์ฅ๊ณผ ๋ฌธ์ฅ ์ฌ์ด์ ๊ตฌ๋ถ์๋ก์์ ์ญํ ์ ํ๋ค.
๋ฐ๋ผ์ ๊ผญ ํ ๋ฌธ์ฅ์ ๋์ ์ ์ด์ค ํ์๊ฐ ์๊ณ
๋ค์ ๋ฌธ์ฅ ์์๋ถ๋ถ์ ์ ์ด์ ๊ตฌ๋ถํด์คฌ์์ ๋ํ๋ด๋ ๋๋ค.
const a = arr[0]
const b = arr[1]
const c = arr[2]
console.log(a,b,c)
;[a,b,c] = arr
// ;[] ;{} ์ด๋ ๊ฒ ์ธ ์๋ ์๋ค.
4. ์ค์ค๋ก ํด๋ณด๊ธฐ
// ๋ฐฐ์ด ๊ตฌ์กฐ ๋ถํด ํ ๋น
let a = 0;
let b = 0;
let c = 0;
const arr = [1,2,3];
// ๊ธฐ๋ณธํ
[a,b,c] = arr;
console.log(a,b,c);
// ์ผ๋ถ ์์๋ง ์ฌ์ฉ
[,b,c] = arr;
console.log(b,c);
// ์ผ๋ถ ์์ ์ฌ์ฉ ๋๋จธ์ง๋ ๋ค๋ฅธ ๋ฐฐ์ด๋ก ๋ฌถ๊ธฐ
[a,...rest] = arr;
console.log(a,rest)
// ๊ฐ์ฒด ๊ตฌ์กฐ ๋ถํด ํ ๋น
const obj = {
x: 123,
y: 45,
z: 6,
w: 777,
ga: 1,
na: 2,
da: 3,
ra: 4
};
// ๊ธฐ๋ณธํ
//{x,y,z} = obj
// console.log(x,y,z)
// ์ผ๋ถ ์์๋ง ์ฌ์ฉ
const {w} = obj
console.log(w)
// ์ผ๋ถ ์์ ์ฌ์ฉ ๋๋จธ์ง๋ ๋ค๋ฅธ ๋ฐฐ์ด๋ก ๋ฌถ๊ธฐ
const {z, ...past} = obj
console.log(z,past)
// default ๊ฐ ์ด์ฉ
const {o=4} = obj
console.log(o)
// ๋ณ์ ์ด๋ฆ ์ฌ์ ์ธ
const {ga:gggg, na:nnnn, da:dddd, ra:rrrr} = obj
console.log(gggg,nnnn,dddd,rrrr)
2 ๋ฒ์งธ ๋ณต์ต
// ๋ฐฐ์ด์์์ ๊ตฌ์กฐ๋ถํด
// ๊ธฐ๋ณธํ
//let a, b, c;
// const arr = [1, 454, 2145, 3939];
// [airJordan, b, c, d] = arr;
// console.log(airJordan, b, c, d);
// ์์ ์ค ์ผ๋ถ๋ถ๋ง ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด?
// const [, x, y] = arr;
// console.log(x, y);
// ์ ๊ฐ ์ฐ์ฐ์ ์ด์ฉ ๋๋จธ์ง๋ ๋ถ๋ถ ๋ฐฐ์ด๋ก ๋ฌถ๊ธฐ
// [a, ...good] = arr;
// console.log(a, good);
// ๊ฐ์ฒด์์์ ๊ตฌ์กฐ๋ถํด
const obj = {
a: "์ด์ด",
b: "์์ฝ๋ง๋ฐ๋ค",
c: "์ ์ ",
d: "์ฌ๋ฆฐ๊ฐ",
x: "๋๊ฐ ์์ ์ํ~",
};
// ๊ธฐ๋ณธํ
// const { a, b, c, d } = obj;
// console.log(a, b, c, d);
// ์์ ์ค ์ผ๋ถ๋ถ๋ง ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด?
// const { a, d } = obj;
// console.log(a, d);
// default ๊ฐ ํ ๋น
// const { a, b, x = 4 } = obj;
// console.log(a, b, x);
// ๋ณ์ ์ด๋ฆ ์ฌ ์ ์ธ
// const { a: apple, b: banana, c: milk, d: saringan, x: sofa } = obj;
// console.log(apple, banana, saringan, sofa);
// ์ ๊ฐ ์ฐ์ฐ์ ์ด์ฉ ๋๋จธ์ง ๋ถ๋ถ ๋ฐฐ์ด๋ก ๋ฌถ๊ธฐ
// const { a, x, ...rest } = obj;
// console.log(a, x, rest);