본문 바로가기

복습/Javascript

[Javascript] 객체지향 자바스크립트 [함수는 데이터, 콜백함수, 함수반환, 내부함수]

# 함수는 데이터

  • 함수를 변수에 할당할 수 있다
  • 이러한 방식을 함수 리터럴 표기법(function literal notation)

          예) 함수 리터럴 표기법
           

  • function(){return 1;} 이 부분이 함수 표현식(function expression)
  • 함수표현식은 이름을 가질 수 있으며, NFE(named function expression), 이름있는 함수표현식이 된다
  • typeof 를 하게되면 "function" 문자열이 반환 (위의 사진 참고)

          
  • 함수를 다른 변수에 복사할 수 있다

            예)

            


  • 변수의 이름지정규칙과 동일한 규칙 적용(숫자로 시작불가)




# 익명 함수(anonymous function)


  • 익명함수를 매개변수로 다른 함수에 전달가능
  • 함수이름이 없음
  • 익명 함수를 정의하고 바로 실행 가능

        예)
            


# 콜백 함수(callback function)


  • 다른 함수의 인수로 전달가능
  • 함수 A를 B에 전달하고, B가 A를 실행하면 콜백(callback)함수
  • A가 이름이 없으면 '익명 콜백함수'
  • 콜백함수의 이점

            이름을 지정할 필요 없이 전달가능, 변수가 적어짐
            작성할 코드가 적어짐
            실행 연기 또는 호출 차단 해제로 성능을 향상시킴 (비동기방식)

                비동기 방식이란?
                    참고 : http://private.tistory.com/24

    예) 콜백함수의 예


    예제)  addOne 함수를 인수로 넘겼다



    예제)  addOne 함수없이 익명함수로 콜백 , 결과는 위와 동일







# 즉시 실행 함수(immediate function or self-invoking function)


  • 함수가 정의되는 즉시 호출
  • 사용방법

        예) 3가지 방법
        
  • 추가 전역 변수를 생성하지 않고도 작업을 수행할 수 있다.
  • 일회성, 초기화작업

        심화
            즉시실행함수에 이름을 붙여서 변수에 저장하지않고 재귀함수 표현 가능

                
                


# 내부(비공개) 함수

  • 다른 함수 안에서 함수를 정의 할 수 있다
  • 이름 충돌이 발생할 가능성이 줄어든다
  • 개인정보 보호 : 필요한 함수만 외부에 노출시키고 사용하지 않는 함수는 보이지않게 함

            예)    inner(4) 를 호출하려하면 not defined 에러가 발생

                
                
# 함수를 반환하는 함수

  • 함수는 항상 값을 반환
  • return 을 기술하지않으면 암시적으로 undefined 반환
  • 함수도 반환가능

            예) 
                    aa() 호출에 의해 반환된 함수를 변수 bb 에 저장
                    bb() 호출

            
            
            

            예)  aa()(); 를 해줌으로써 변수 bb 를 절약 결과는 동일