함수와 그 함수 주변 상태의 주소 조합.
풀어 말하면 실행이 끝난 함수의 지역 변수를 참조하면서 실행이 끝난 함수보다 오래 실행되는 함수 === 클로저
보통은 함수 내부에 하나의 함수가 리턴되어지는 형식으로 있다.
- spread 연산자 (...)
- 객체나 배열의 요소, 프로퍼티 만 가져와 새로운 배열이나 객체에 담아줌
- 기존의 객체 배열은 건들이지 않음.
- 배열이나 객체 끼리의 복사나 추가도 가능
- 함수의 전달인자에 사용이 가능함.
- rest 파라미터 (...rest)
- spread 연산자와 비슷해보이지만 다름.
- 객체, 배열, 함수의 매개변수에서 사용이 가능함.
- 객체와 배열에서 사용할 때는 구조 분해 할당 문법과 함께 사용됨.
- 사용할때는 주로 rest 키워드를 사용하는데 꼭 rest 일 필요는 없음.
- 배열이나 객체의 속성들을 해체해 그 값들을 개별 변수에 담는 문법
- 구조 분해 할당의 구문은 일반적인 객체나 배열을 정의하는 것과 유사하지만
대신 할당문의 좌변에서 사용하여, 원래 변수에서 어떤 값을 분해해 할당할지 정의한다.
- 함수를 정의하는 새로운 방법 'function' 키워드 대신
=>
화살표를 사용함- 'function' 키워드를 사용하지 않기 때문에 스코프 중 블록 스코프를 따름
- 사용 예시
- 특징
- 매개변수가 한 개일 때, 소괄호를 생략할 수 있다. (매개변수가 없거나 2개이상이면 소괄호 필수!)
- 화살표 함수 코드 블록 내부가 하나의 문으로 구성되어 있으면
중괄호와 return
키워드를 생략할 수 있다.
rest 파라미터는 두가지 경우로 사용가능한데
1.rest 파라미터 + 구조분해 할당 문법
같이 사용하게 되면 객체나 배열의 나머지 요소나 프로퍼티를 추출할 수 있다.사용 예
- 객체의경우
rest 파라미터 부분
{three(뺄 값), ...rest}
구조 분해 할당 문법 부분
const {three(뺄 값), ...rest} = a;
- 배열의 경우
- 함수에서 정해지지않은 매개변수를 배열로 받을 수 있다.
즉 매개변수에 어떤 범위의 값들이 들어올 지 모르는 경우에 사용하면 좋음.사용 예
주의할 점은
spread 연산자는 전달인자에 주어져야하고
rest 파라미터는 매개변수에 주어져야 한다!