๐Ÿฆœ Computer Language/JavaScript

[JavaScript] spread | ์ „๊ฐœ ์—ฐ์‚ฐ์ž

์Šคํ”„๋ ˆ๋“œ ์—ฐ์‚ฐ์ž('...')๋Š” ์—ฐ๊ฒฐ, ๋ณต์‚ฌ ๋“ฑ์˜ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ ๋ฐฐ์—ด๊ณผ ๊ฐ์ฒด๋ฅผ ํ•œ ์ค„๋กœ ํŽผ์น˜๋Š” ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋ฐฐ์—ด์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

const coffee = ["์•„๋ฉ”๋ฆฌ์นด๋…ธ", "๋ฐ”๋‹๋ผ๋ผ๋–ผ"];
const juice = ["ํฌ๋„์ฃผ์Šค", "์˜ค๋ Œ์ง€์ฃผ์Šค", "ํ† ๋งˆํ† ์ฃผ์Šค"];

const menu = [...coffee, "์ƒˆ๋กœ์šด ์Œ๋ฃŒ", ...juice];

console.log(menu); // ["์•„๋ฉ”๋ฆฌ์นด๋…ธ", "๋ฐ”๋‹๋ผ๋ผ๋–ผ", "์ƒˆ๋กœ์šด ์Œ๋ฃŒ", "ํฌ๋„์ฃผ์Šค", "์˜ค๋ Œ์ง€์ฃผ์Šค", "ํ† ๋งˆํ† ์ฃผ์Šค"]

 

์ƒ๋‹นํžˆ ์ง๊ด€์ ์ธ ์˜ˆ์‹œ๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค ^-^!

 

๊ฐ์ฒด์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

const latte = {
	base: "milk",
    from: "Starbucks"
};

const banillaLatte = {
	...latte,
    syrup: "banilla"
};

console.log(banillaLatte); // { base: 'milk', from: 'Starbucks', syrup: 'banilla' }

์ฆ‰, ์ค‘๋ณต๋œ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ณ„์† ์ž‘์„ฑํ•ด์•ผํ•  ๋•Œ spread์˜ ์‚ฌ์šฉ์œผ๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ํ•จ์ˆ˜์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

function add(...param) {
	let sum = 0;
    for (let n of param) {
    	sum += n;
    }
    return sum;
}

console.log(add(1)); // 1
console.log(add(1,2)); // 3
console.log(add(1,2,3)); // 6

spread ์—ฐ์‚ฐ์ž + ์ •ํ•ด์ง€์ง€ ์•Š์€ ์ธ์ˆ˜๋ฅผ ๋ฐฐ์—ด๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๊ฒŒํ•˜๋Š” rest parameter์˜ ์กฐํ•ฉ์œผ๋กœ๋ช‡ ๊ฐœ์˜ ์ธ์ž๊ฐ€ ์˜ค๋“ ์ง€, ๋ชจ๋“  ์ธ์ž๋ฅผ ๋”ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

* ์ฐธ๊ณ ๋กœ ์ด ๋•Œ ๋“ค์–ด์˜ค๋Š” param์€ ๋ฐฐ์—ด์ด๋‹ค.