12.1 함수란?
- 매개변수parameter : 함수 내부로 입력을 전달받는 변수
- 인수 argument : 입력
- 반환 값 return value : 출력
12.2 함수를 사용하는 이유
12.3 함수리터럴
12.4 함수 정의
- 함수 정의 : 함수를 호출하기 이전에 인수를 전달받을 매개변수와 실행할 문들, 그리고 반환할 값을 지정하는 것
12.4.1 함수 선언문
- 함수 선언문은 함수 이름을 생략할 수 없다.
function add(x,y) {
return x+y;
}
- 함수 선언문은 표현식이 아닌 문이라서 변수에 할당할 수 없다. ..?????
12.4.2 함수 표현식
- 함수를 호출할 때는 함수 이름이 아니라 함수 객체를 가리키는 식별자를 사용해야한다.
// 기명 함수 표현식
var add = function lala(x,y) {
return x+y;
}
// 함수 객체를 가리키는 식별자로 호출
add(2,5); // 7
// 함수 이름으로 호출하면 ReferenceError발생
// 함수 이름은 함수 몸체 내부에서만 유효한 식별자
lala(2,5) // Uncaught ReferenceError: lala is not defined
12.4.3 함수 생성 시점과 함수 호이스팅
// 함수 참조
console.dir(add);
console.dir(sub);
// 함수 호출
console.log(add(2,5)); // 7
console.log(sub(2,5));
//함수 선언문
function add(x,y) {
return x+y;
}
//함수 표현식
var sub = function (x,y) {
return x-y
}
12.4.4 Function 생성자 함수
→ Function 생성자 함수로 함수를 생성하는 방식은 일반적이지 않으며 바람직하지도 않다.
12.4.5 화살표 함수 (ES6)
- 익명함수로 정의
- 생성자 함수로 사용불가능
- 기존 함수의 this바인딩 방식 상이
- prototype 프로퍼티 존재 X
- arguments 객체 생성 X
12.5 함수 호출
12.5.1 매개변수와 인수
12.5.2 인수확인 =========
12.5.3 매개변수의 최대 개수
- 매개변수의 최대 개수에 명시적으로 제한하고 있지 않다
- 하지만 이상적인 함수는 한 가지 일만 해야하며 가급적 작게 만들어야 한다.
12.5.4 반환문 return
반환문의 역할
- 함수의 실행을 중단하고 함수 몸체를 빠져나간다.
- return 키워드 뒤에 오는 표현식을 평가해 반환한다.
12.6 참조에 의한 전달과 외부 상태의 변경 ?????
12.7 다양한 함수의 형태
12.7.1 즉시실행함수 IIFE,Immediately Invoked Functrion Expresstion
- 함수정의와 동시에 즉시 호출되는 함수 (단한번만 호출되며 다시호출할 수 없다.
// 익명 즉시 실행함수
(function(){
}());
12.7.2 재귀함수 recursive function
- 함수가 자기 자신을 호출하는 함수
- 반복되는 처리를 위해 사용
- 자신을 무한 재귀호출하기 때문에 탈출조건을 반드시 만들어야 함 (그렇지 않으면 스택오버플로 에러 발생)
function countdown(n){
for(var i = n; i >= 0; i--) console.log(i);
}
countdown(10);
//재귀함수 사용
function countdown(n) {
if(n < 0) return;
console.log(n);
countdown(n-1); //재귀 호출
}
countdown(10);
12.7.3 중첩 함수
- 외부함수 : 중첩함수를 포함하는 함수
- 중첩함수는 외부 함수 내에서만 호출할 수 있다.
- 헬퍼함수의 역할.
12.7.4 콜백함수 ???
- 자바스크립트의 함수는 일급객체이므로 함수의 매개변수를 통해 함수를 전달할 수 있다.
- 콜백함수 : 함수의 매개변수를 통해 다른 함수의 내부로 전달되는 함수
- 고차함수 : 매개변수를 통해 함수의 외부에서 콜백 함수를 전달받은 함수
12.7.5 순수함수와 비순수 함수
- 순수함수 : 어떤 외부 상태에 의존하지도 않고 변경하지도 않는, 부수효과가 없는 함수
- 비순수 함수 : 외부상태에 의존하거나 외부상태를 변경하는 , 부수효과가 있는 함수
'💻 DEV > JavaScript' 카테고리의 다른 글
[Deep Dive] 11장 원시 값과 객체의 비교 (0) | 2021.11.15 |
---|---|
[Deep Dive] 10장 객체 리터럴 (0) | 2021.11.15 |
[모던자바스크립트 Deep Dive] 09장 타입 변환과 단축평가 (0) | 2021.11.04 |
[모던자바스크립트 Deep Dive] 08장 제어문 control flow statement (0) | 2021.11.04 |
[모던자바스크립트 Deep Dive] 07장 연산자 operator (0) | 2021.11.04 |