2014년 7월 3일 목요일

[3 Week] 자바스크립트의 함수

자바스크립트의 함수


1. 자바스크립트의 함수의 역할

  • 호출 가능한 루틴으로서의 함수
  • 값으로서의 함수
    • 인자로 전달 가능
    • 변수에 할당 기능
    • 다른 함수의 반환값으로 사용 가능
  • 다른 인스턴스를 생성할수 있는 요소 객체 타입으로서의 함수

2. 함수 모델링

  • 함수하나를 만들 경우 “변수 스코프” , “실행 코드 블록”, “공개 변수 영역”, “프로토타입 객체” 구조가 만들어 집니다.
    • 변수 스코프
    • 내부에서 접근 가능하지만 외부에서 접근 불가능한 변수 java) private variable
    • 실행 코드 블록
    • 일반적인 객체에 대한 함수 java) public method
    • 공개 변수 영역
    • 런타임 시 동적으로 추가되는 멤버의 함수
    • 프로토 타입 객체
    • 부모의 역할을 하는 타입 객체 나중에 다시 설명
      function add(x, y){
      return x + y;
      }
      

3. 함수 정의

  • 함수 리터럴 이용
    var add = function(x, y){
    return x + y;
    }
    
  • Function 생성자 사용
    var add = new Function("x","y","return x + y");
    
  • 함수 정의문 사용
    function add(x, y){
    return x + y;
    }
    

4. 함수 인자

  • arguments
    • Arguments 라는 객체 타입에 매개 변수가 할당 됩니다.
    • arguments는 리스트 형태이며 for 문을 통해 매개변수에 접근이 가능 합니다.
    • 매개변수가 설정되어 있던 안되어 있던 상관이 없음 (java에선 컴파일 오류 발생)
    • arguments.callee
    • 생성자의 this와 유사한 개념 2번째 역할에서의 this와 같은 개념
    • 재귀호출을 구현 할때 유용하게 사용 가능
      function makeFactorialFunc(){
      return function(x){
          if(x <=1)
               return 1;
          return x * arguments.callee(x - 1); // 익명함수를 나타냄
      }
      }
      

5. Function

  • 실제 코딩에서 사용하지 않음
  • function과 구분이 필요
    • Function == 객체 , function == 예약어

6. 함수 객체


7. 익명 함수

  • 이름이 없는 함수 일회성에서 사용 자바의 익명 클래스
    var v = function(x,y){ return x + y}; // 함수 정의하고 변수에 저장
    o.func(function(x,y){ return x + y}); // 함수를 정의하고 다른 함수에 인자로 전달
    var added = (function(x) {return x + y;})(1,2); // 함수를 정의하고 바로 호출한다.
    

8. 중첩 함수

  • 함수 안에 함수가 정의 되어 있는 형태의 함수 입니다.
  • 안에 있는 함수는 밖에 있는 함수 범위 밖에서는 사용 불가능 합니다.
  • 정보은닉, 캡슐화 에서 사용 됩니다.

9. 콜백 함수

  • 라이브러리 함수에서 실행을 마치고 나면 다시 특정 함수를 호출하는 구조입니다.
  • 자바스크립트의 Single Thread 의 단점을 콜백 함수를 통한 이벤트 방식으로 처리 합니다.
  • 이벤트 핸들링과 비슷한 구조 입니다.
  • jQuery에 ajax 사용법이 그 대표적인 예 입니다.
    $.ajax({
      url : "....",
      success : function(){.....}, //콜백함수
      error : function(){.....} // 콜백함수
    });
    

회고

댓글 없음:

댓글 쓰기