[]
에서 벗어난다function sum(x, y, z) {
return x + y + z;
}
const number = [1, 2, 3];
sum(...number) // 6 ⇒ 1 + 2 + 3 을 한 것
파라미터를 배열의 형태로 받아서 사용 ⇒ 파라미터 개수가 가변적일 때 유용
function sum(...theArgs) {
return theArgs.reduce((previous, current) => {
return previous + current; // 지금까지 계산 된 값 + 현재 값
}); // 초기값 `,0` 을 넣어도 되는데 옵션이라 안 넣으면 0으로 시작함
}
sum(1,2,3) // 6 ⇒ 0+1=1, 1+2=3, 3+3=6
sum(1,2,3,4) // 10 ⇒ 0+1=1, 1+2=3, 3+3=6, 6+4=10
.reduce 는 함수를 받는데 이전 값(previous) 과 현재 값(current)
이전 값은 누적된 계산값 이라고 생각해야 함
let parts = ['shoulders'. 'knees']
let lyrics = ['head', ...parts, 'and', 'toes'];
console.log(lyrics) // ['head', 'shoulders', 'knees', 'and', 'toes']
let arr1 = [0, 1, 2];
let arr2 = [3, 4, 5];
arr1 = [...arr1, ...arr2]; // [0, 1, 2, 3, 4, 5]
let arr1 = [0, 1, 2];
let arr2 = [...arr1]; // arr1.slice() 와 유사
arr2.push(4); // 4
console.log(arr2) // [0, 1, 2, 4]
console.log(arr1) // [0, 1, 2]
let obj1 = {foo: 'bar', x: 42}
let obj2 = {foo: 'bax', y: 13}
let clonedObj = {...obj1};
let mergedObj = {...obj1, ...obj2};
console.log(clonedObj); // {foo: 'bar', x: 42}
console.log(mergedObj); // {foo: 'bax', 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');
// 콘솔 순서
// a one
// b two
// manyMoreArgs ['three', 'four', 'five']
const [a, b, ...rest] = [1, 2, 3, 4, 5];
console.log(a); // 1
console.log(b); // 2
console.log(rest); // [3, 4, 5]
const {c, d, ...rest} = {a: 1, b: 2, c: 3, d: 4, e: 5};
console.log(c) // 3
console.log(d) // 4
console.log(rest) // {a: 1, b: 2, e: 5}
function whois({displayName: displayName, fullName: {firstName: name}}) {
console.log(displayName + ' is ' + name);
}
let user = {
id: 42,
displayName: 'jdoe',
fullName: {
firstName: 'John',
lastName: 'Doe'
}
};
whois(user) // jdoe is John