주로 배열을 풀어서 인자로 전달하거나, 배열을 풀어주는 문법
function sum(x, y, z) {
return x + y + z;
}
const numbers = [, , ];
sum(...numbers)
파라미터를 배열의 형태로 받아서 사용할 수 있습니다. 파라미터 개수가 가변적일 때 유용합니다.
function sum(...theArgs) {
return theArgs.reduce((previous, current) => {
return previous + current;
});
}
참고: spread 문법은 기존 배열을 변경하지 않으므로, 얕은 복사
let obj = { foo: 'bar', x: };
let obj = { foo: 'baz', y: };
let clonedObj = { ...obj };
let mergedObj = { ...obj, ...obj };
function myFun(a, b, ...manyMoreArgs) {
console.log("a", a);
console.log("b", b);
console.log("manyMoreArgs", manyMoreArgs);
myFun("one", "two", "three", "four", "five", "six");
}
spread syntax는 iterable 한 모든 것의 (대표적으로 문자열, 배열) 요소를 "펼쳐"주는 문법을 의미합니다.
ES6가 등장하면서 함수를 정의하는 방법이 하나 더 생겼습니다. 바로 화살표 함수(arrow function)입니다. 함수표현식으로 함수를 정의할 때 function 키워드 대신 화살표(=>)를 사용합니다.
// 화살표 함수
const multiply = (x, y) => {
return x * y;
}
이처럼 화살표 함수를 사용하면 함수표현식으로 함수를 정의할 때보다 간략하게 함수를 정의할 수 있습니다. 또한 화살표 함수로 함수를 정의할 때 생략할 수 있는 몇 가지 규칙이 있습니다. 그 규칙들을 알아보겠습니다.
. 매개변수가 한 개일 때, 소괄호(())를 생략할 수 있다.
. 함수 코드 블록 내부가 하나의 문으로 구성되어 있다면 중괄호({})를 생략할 수 있다. 이때 코드 블록 내부의 문이 값으로 평가될 수 있으면 return 키워드를 생략할 수 있다.
const squre = x => x * x