Javascript Function   자바스크립트 함수

(2018-12-05)

함수 , Function

1. 함수 이란?

  ㅇ [프로그래밍 일반]   
     - 함수란 일단 정의되면 여러번 호출되며 실행될 수 있는 프로그램 블록

  ㅇ [자바스크립트 언어]  
     - 자바스크립트 함수는,
        . `C 언어함수`,`자바 언어메서드` 등과는 달리, 
        . 그 자신이 객체이며,
        . 다른 객체를 생성할 수 도 있음
     - 그러나, 자바스크립트 함수는 특별한 객체 로써,
        . `실행 execute 가능(호출 invoke 가능)`,`참조 reference 가능`이라는 특징을 
           모두 갖는 특별한 객체
2. 자바스크립트 함수의 특징 (통상의 프로그래밍 언어와의 차별점)함수 할당/대입이 다양함
     - 함수를 `변수`에 할당할 수 있음
        . 함수명과 변수명의 경계가 모호함 (명칭 만으로는 구분이 안됨)
     - `객체프로퍼티`에 함수를 할당할 수 있음
     - `배열 내 원소`에도 할당(정의,저장)할 수 있음

  ㅇ 함수매개변수로 전달할 수도 있고, 함수 그 자체를 반환할 수도 있음
     - 즉, 함수를 다른 함수에 의해 인수로써 전달 또는 결과로써 반환할 수 있음
        . 함수 그 자체가 인수나 리턴 값으로 사용할 수 있음
     - 이를두고 1급 함수 또는 1급 객체 (First Class Object) 라고도 함

  ㅇ 함수 정의/생성/구현 방식이 다양함         ☞ 자바스크립트 함수 생성 방법 종류 참조
     - 명시적 함수에 의한 구현 가능 이외에도,
     - 익명 함수의 구현 가능
     - 함수 리터럴을 이용하여 구현 가능
     - 함수 생성자를 이용하여 구현 가능
     * 즉, 정적 및 동적으로 모두 생성 가능

  ㅇ 자바스크립트 함수데이터타입 중 하나로써 취급됨  ☞ 자바스크립트 타입 구분 참조

  ㅇ 자바스크립트 함수는 일종의 객체 임   ☞ Function 객체, 자바스크립트 객체 참조
     - 그 안에 프로퍼티,메소드가 있게되며, 
     - Function 생성자의 prototype 객체(Function.prototype)를 상속 받아 사용 가능
        . 프로퍼티 : caller, length, name, prototype 등
        . 메소드 : apply(), bind(), call(), constructor, toString() 등
     - String,Number,Date 등의 다른 객체 타입과 유사하게 취급됨


3. 자바스크립트함수 생성 방법 종류

  ※ ☞ 자바스크립트 함수 생성 방법 종류 참조
     - 명시적 함수, 익명 함수, 함수 리터럴
4. 자바스크립트 함수에서 매개변수 종류

  ㅇ 명시적 매개변수 
     - 함수 호출시 function(매개변수 1,매개변수 2,...) 처럼 명시적으로 전달되는 것

  ㅇ 암묵적 매개변수
     - 함수 호출시 명시적으로 언급된 인수 외에도, 암묵적으로 arguments, this 가 전달됨

     - arguments 매개변수 : 언급되어 전달된 모든 인자들을 담고있는 컬렉션
        . arguments[0] : 첫번째 인수값, arguments[n-1] : n번째 인수값
        . arguments.length : 인수 갯수
        . arguments.callee : 현재 실행되고 있는 함수에 대한 참조

     - this 매개변수      : 함수 호출과 관련된 묵시적인 객체를 참조 
        . 이를 함수/호출 컨텍스트(function/invocation context)라고도 함


5. 자바스크립트 함수 호출 및 참조함수 호출(invoke)    : 함수명 뒤에 소괄호 ()를 쓰면 호출(실행)

     - 즉시 실행 함수 이란?
        . 함수 정의 및 호출/실행을 동시에 하는 방법
        . 구문 형식 : (function() { ... })();

  ㅇ 함수 참조(reference) : 함수명 뒤에 괄호()를 쓰지 않으면, 함수를 참조 만 함
     - 이때에는, 변수,객체 프로퍼티,배열 원소 등에 할당시켜, 단순히 참조 만 가능
     * 즉, 자바스크립트는, 함수를 값 처럼 할당,리턴이 가능하여, 프로그래밍에 유연성을 줌


6. 함수 메모이제이션 (Memoization)함수를 호출했을 때, 그 인수와 반환값을 한 쌍으로 만들어 저장해 두는 기법


[JS 함수] 1. JS 함수 2. JS 함수 종류 3. Function 객체 4. 실행 컨텍스트 5. 클로저 6. 화살표 함수,중첩 함수

 
        최근수정     요약목록(시험중)     참고문헌