fffo

함수의 일급 객체 본문

Programming/Javascript

함수의 일급 객체

gggs 2021. 10. 2. 18:37

함수의 일급 객체

일급 객체의 조건

  • 무명의 리터럴로 생성 가능(런타임에 생성 가능)
  • 변수나 자료구조(객체, 배열 등)에 저장 가능
  • 함수의 매개변수에 전달 가능
  • 함수의 반환값으로 사용 가능

함수 객체의 프로퍼티

arguments

  • 함수 호출 시 전달된 인수의 정보를 담고 있는 유사 배열 객체이자 이터러블 자료구조
  • 함수 내부에서 지역 변수처럼 사용, 외부에서 참조 불가
  • arguments 프로퍼티로서 사용하는 방법은 ES3부터 표준에서 폐지됨. 함수 내부에서 지역 변수처럼만 사용 권장
  • js는 선언된 매개변수의 개수와 함수 호출 시 전달되는 인수의 개수를 확인하지 않으므로 인수 개수를 확인하는 동작 시 arguments 객체를 활용. 가변 인자 함수 구현 용이
  • ES6에서 나온 Rest 파라미터로 가변 인자 함수 구현 시 arguments 객체 대체 가능
function sum() {
    const arr = Array.prototype.slice.call(arguments);
    return arr.reduce(function (pre, cur) {
        return pre + cur;
    }, 0);
}

function sumES6(...args) {
    return args.reduce((pre,cur) => pre + cur, 0);
}

caller

  • ECMAScript 사양에 포함되지 않은 비표준 프로퍼티
  • 함수 자신을 호출한 함수를 가리킴

length

  • 함수를 정의할 때 선언한 매개변수의 개수
  • arguments 객체의 length 프로퍼티와 함수 객체의 length 프로퍼티의 값은 다를 수 있음에 유의

name

  • 함수의 이름을 나타냄
  • ES6에 정식 표준이 됨
  • ES5와 ES6에서 동작이 다름
    • 익명 함수 표현식에서 ES5는 빈 문자열, ES6은 함수 객체를 가리키는 식별자 값

proto 접근자 프로퍼티

  • [[Prototype]] 내부 슬롯이 가리키는 프로토타입 객체에 접근하기 위해 사용하는 접근자 프로퍼티

prototype

  • 생성자 함수가 생성할 인스턴스의 프로토타입 객체를 가리킴
  • 생성자 함수로 호출할 수 있는 함수 객체만 가짐

'Programming > Javascript' 카테고리의 다른 글

strict mode  (0) 2021.10.04
프로토타입  (0) 2021.10.03
생성자 함수에 의한 객체 생성  (0) 2021.10.01
프로퍼티 어트리뷰트  (0) 2021.09.30
전역변수의 문제점 / let, const 키워드와 블록 스코프  (0) 2021.09.29
Comments