이채현
Rest and Spread
Spread
기본적으로 변수를 가져와 풀어 해쳐 전개해놓는 것.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
const friends = [1, 2, 3, 4];
console.log(friends); console.log(...friends);
const family = ["a", "b", "c"]; console.log(friends + family); console.log([friends, family]); console.log([...friends, ...family]);
const newFriends = [...friends, 5, 6, 7]; console.log(newFriends);
const admin = { username: "admin", }; console.log({ ...admin, password: 123 });
const lastName = prompt("Last name: "); const person = { username: "person", age: 24, ...(lastName !== "" && { lastName }), }; console.log(person);
|
Rest Parameters
끝없는 인자를 받아 볼때 유용하게 이용할 수있다
spread
는 죄다 펼쳐 확대시키는 것이고, ****rest
는 하나에 담아서 축소시키는것
어디에 들어가느냐에 따라 spread와 rest(parameter부분에 들어가면 )로 갈릴수있음
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| const infiniteArge = (...kimchi) => console.log(kimchi);
infiniteArge("1", 2, true, "lalala", [1, 2, 3, 4]);
const bestFriends = (firstPotato, ...potatos) => { console.log(`he is ${firstPotato}`); console.log(potatos); }
bestFriends("nico", "lynn", "steve", "flynn");
|
Rest + Spread + Destructure Magic
object를 지우거나 정리할 때 유용하다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| const user = { name :"nico", age:24, password : 12345 };
const killPassword = ({password, ...rest}) => rest;
const cleanUser = killPassword(user) console.log(cleanUser)
const setCountry = ({ country = "KR", ...rest }) => ({ country, ...rest });
console.log(setCountry(user));
|