💻 DEV/JavaScript

[Deep Dive] 12장 함수

웡지 2021. 11. 15. 10:07

12.1 함수란?

  • 매개변수parameter : 함수 내부로 입력을 전달받는 변수
  • 인수 argument : 입력
  • 반환 값 return value : 출력

Untitled

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 매개변수와 인수

Untitled

12.5.2 인수확인 =========

12.5.3 매개변수의 최대 개수

  • 매개변수의 최대 개수에 명시적으로 제한하고 있지 않다
  • 하지만 이상적인 함수는 한 가지 일만 해야하며 가급적 작게 만들어야 한다.

12.5.4 반환문 return

반환문의 역할

  1. 함수의 실행을 중단하고 함수 몸체를 빠져나간다.
  2. 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 순수함수와 비순수 함수

  • 순수함수 : 어떤 외부 상태에 의존하지도 않고 변경하지도 않는, 부수효과가 없는 함수
  • 비순수 함수 : 외부상태에 의존하거나 외부상태를 변경하는 , 부수효과가 있는 함수