๐Ÿ“ŒLanguage/JavaScript

TIL) JS ES6 ๋ฌธ๋ฒ•, spread, rest ๋ฌธ๋ฒ•, ๊ตฌ์กฐ๋ถ„ํ•ดํ• ๋‹น, ์Šคํ”„๋ ˆ๋“œ์™€ ๊ตฌ์กฐ๋ถ„ํ•ด ์ฐจ์ด

hellohailie 2022. 5. 14. 01:52

๐Ÿ‹ spread๋ฌธ๋ฒ•

=> ์ฃผ๋กœ ๋ฐฐ์—ด์„ ํ’€์–ด์„œ ์ธ์ž๋กœ ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜, ๋ฐฐ์—ด์„ ํ’€์–ด์„œ ๊ฐ๊ฐ์˜ ์š”์†Œ๋กœ ๋„ฃ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. 

function sum(x, y, z) {
  return x + y + z;
}

const numbers = [1, 2, 3];

sum(...numbers) // 6

๐Ÿ‹ rest ๋ฌธ๋ฒ•

=> ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐฐ์—ด์˜ ํ˜•ํƒœ๋กœ ๋ฐ›์•„์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. (ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐฏ์ˆ˜๊ฐ€ ๊ฐ€๋ณ€์ ์ผ๋•Œ ์œ ์šฉ)

function sum(...theArgs) {
  return theArgs.reduce((previous, current) => {
    return previous + current;
  });
}

sum(1,2,3) // 6
sum(1,2,3,4) // 10

 

๐Ÿ… ๋ฐฐ์—ด ํ•ฉ์น˜๊ธฐ

let arr1 = [0, 1, 2];
let arr2 = [3, 4, 5];
arr1 = [...arr1, ...arr2]; 

console.log(arr1); // [0,1,2,3,4,5]

 

spread ๋ฌธ๋ฒ•์€ ๊ธฐ์กด ๋ฐฐ์—ด์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ(immutable), arr1์˜ ๊ฐ’์„ ๋ฐ”๊พธ๋ ค๋ฉด ์ƒˆ๋กญ๊ฒŒ ํ• ๋‹นํ•ด์•ผ ํ•œ๋‹ค.

 

 

๐Ÿ… ๋ฐฐ์—ด ๋ณต์‚ฌ

let arr = [1, 2, 3];
let arr2 = [...arr]; // 
arr2.push(4);

console.log(arr); // [1,2,3]
console.log(arr2); // [1,2,3,4]

 

๐Ÿ… ๊ฐ์ฒด์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ

let obj1 = { foo: 'bar', x: 42 };
let obj2 = { foo: 'baz', y: 13 };

let mergedObj = { ...obj1, ...obj2 };

console.log(mergedObj); // {foo: 'baz', x: 42, y: 13}

 

 

๐Ÿ… ๋‚˜๋จธ์ง€ ํŒŒ๋ผ๋ฏธํ„ฐ ๋ฐ›์•„์˜ค๊ธฐ

function myFun(a, b, ...manyMoreArgs) {
  console.log("a", a);
  console.log("b", b);
  console.log("manyMoreArgs", manyMoreArgs);
}

myFun("one", "two", "three", "four", "five", "six");

a one
b two
manyMoreArgs (4) ['three', 'four', 'five', 'six']

 

 

์ถ”๊ฐ€ํ•™์Šต ํ•„์š” (์ฐจ์ด)

let arr = [10, 30, 40, 20]
let value = Math.max(...arr)

์ด๋•Œ value๋Š” 40

 

let arr = [10, 30, 40, 20]
let value = Math.max(arr)

์ด๋•Œ value๋Š” NaN

 

 

๐Ÿ‹ ๊ตฌ์กฐ ๋ถ„ํ•ด(destructing)

: spread ๋ฌธ๋ฒ•์„ ์ด์šฉํ•˜์—ฌ ๊ฐ’์„ ํ•ด์ฒดํ•œ ํ›„, ๊ฐœ๋ณ„ ๊ฐ’์„ ๋ณ€์ˆ˜์— ์ƒˆ๋กœ ํ• ๋‹นํ•˜๋Š” ๊ณผ์ •

 

 

๋ฐฐ์—ด

const [a, b, ...rest] = [10, 20, 30, 40, 50];
console.log(a); // 10
console.log(b); // 20
console.log(rest); // [30, 40, 50]

 

const numbers = [1,2,3];
[num1, ,num3] = numbers;
console.log(num1,num3);

// 1
// 3

 

 

๊ฐ์ฒด

const {a, b, ...rest} = {a: 10, b: 20, c: 30, d: 40}
console.log(a); // 10
console.log(b); // 20
console.log(rest); // {c: 30, d: 40}

 


๐Ÿ‹ ์Šคํ”„๋ ˆ๋“œ์™€ ๊ตฌ์กฐ๋ถ„ํ•ด ์ฐจ์ด

์Šคํ”„๋ ˆ๋“œ๋Š” ๋ชจ๋“  ์›์†Œ๋‚˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ์ƒˆ ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด ๋˜๋Š” ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” ์–ด๋–ค ๊ฒƒ์— ์ „๋‹ฌํ•œ๋‹ค. 
๊ตฌ์กฐ๋ถ„ํ•ด๋Š” ์›์†Œ๋‚˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ํ•˜๋‚˜๋งŒ ๊ฐ€์ ธ์™€์„œ ๋ณ€์ˆ˜์— ์ €์žฅํ•œ๋‹ค. 


- ๋ฐฐ์—ด์—์„œ์˜ ๊ตฌ์กฐ๋ถ„ํ•ด

[a,b]=['Hello','Max']
console.log(a); // Hello
console.log(b); // Max



- ๊ฐ์ฒด์—์„œ์˜ ๊ตฌ์กฐ๋ถ„ํ•ด

{name}={name:'Max',age:28}
console.log(name); // Max
console.log(age); // undefined

 

๊ฐ์ฒด์—์„œ ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ์„ ์–ธ(const, let, var)๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

์ฐธ๊ณ )

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

 

๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น - JavaScript | MDN

๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น ๊ตฌ๋ฌธ์€ ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด์˜ ์†์„ฑ์„ ํ•ด์ฒดํ•˜์—ฌ ๊ทธ ๊ฐ’์„ ๊ฐœ๋ณ„ ๋ณ€์ˆ˜์— ๋‹ด์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” JavaScript ํ‘œํ˜„์‹์ž…๋‹ˆ๋‹ค.

developer.mozilla.org

 

 

๐Ÿ˜ƒ ์ž˜๋ชป๋œ ๊ฐœ๋… ์ „๋‹ฌ์ด ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ €์˜ ์„ฑ์žฅ์— ํฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค๐Ÿค“