함수 function
- 어떠한 작업을 실행하기 위해 그룹화한 것
- 함수를 쓰는 이유
- 코드의 재사용
- 코드의 그룹화, 모듈화 -> 가독성, 유지보수 또한 좋음
1. 함수 선언
1. 함수 선언식
- function으로 함수의 시작을 알린다.
- 함수명을 써야 한다.
- 호이스팅 : 프로그램의 첫머리로 끌어올린다.
1 | function name() { |
2. 함수 표현식 ( 함수리터럴 )
- 함수 리터럴 : 익명함수, 무명함수
function(x) {...}
- 함수명이 없다 -> 대신, 변수에 함수를 넣는다.
- 익명함수는 호이스팅 X
1
2
3var foo = function() {
console.log("함수리터럴");
};
3. Function 생산자 함수 (잘 사용하지 않음!)
2. 자바스크립트 함수는 객체이다. 일급객체!
일급객체
- 생성, 대입, 연산, 인자 또는 반환값으로서의 전달 등 프로그래밍언어의 기본적 조작을 제한없이 사용할 수 있는 대상
1. 일급객체 특징
- 함수리터럴로 표현이 가능하다.
- 변수나 자료구조(객체, 배열 등)에 저장할 수 있다.
- 함수의 매개변수(Parameter)에 전달할 수 있다.
- 반환값(return)으로 사용할 수 있다.
1 | // 1. 무명의 리터럴로 표현이 가능하다. |
- 파라미터는 3개 이하가 좋다!
- Return : 함수는 return을 만나면 함수 밖으로 값을 내보낸다!
- 함수에서 받아낸 값을 다시 사용해야하는 경우 return을 사용!!!
3. 매개변수(Parameter, 인자) vs 인수(Argument)
1. 매개변수(Paramenter)
함수에게 추가적인 정보가 필요할 경우 매개변수 사용
인수(Argument)를 담는 변수
- 함수 내에서 변수와 동일하게 메모리 공간을 확보
- 전달받은 인수(Argument)는 매개변수에 할당
2. 인수(Argument)
1. 함수에서 넘겨받는 실제 값
1 | var foo = function(p1, p2) { |
2. 참조값 전달, 값의 전달은 다르게 동작한다!
- 값의 전달
1 | function add(x) { |
- 참조값 전달 (Object)
1 | function add1(p) { |
4. 인수 (Argument) vs Rest Parameter (ES6)
1. 인수(Argument)는 유사배열이다
- 유사배열 객체(Array-like Object) : 일반 객체에 length라는 프로퍼티를 가진 객체
- 하지만, 배열은 아니다!!
=> .push()같은 배열 메소드는 사용할 수 없다!
1 | function foo() { |
2. ES6 : Rest Parameter (…rest)
- argument보다 사용하기 편리하다
- 유사배열이 아닌 진짜 배열로 넣어준다!
- Spread연산자( … )을 사용
1 | function foo(...rest) { |