본문 바로가기
자바스크립트

함수 객체( 함수도 객체다)

by 리양 2021. 7. 5.

자바스크립트에서는 함수도 객체다.

그래서 함수는 코드 실행뿐만 아니라, 함수 자체가 일반 객체처럼 프로퍼티들을 가질 수 있다.

 

function add(x,y) {
	return x + y ;
}

// add() 함수 객체에 result, status 프로퍼티 추가
add.result = add(3,2);
add.status = 'OK';

console.log(add.result)  // (출력값) 5
console.log(add.status)  // (출력값) 'OK'

 

add() 의 구조를 그림으로 표현하면 이렇다.

 

 

 

함수는 일급 객체이며 값으로 취급한다.

따라서

  1. 함수를 변수나 객체, 배열 등에 값으로 저장할 수 있으며,
  2. 다른 함수의 인자로 전달한다거나
  3. 함수의 리턴값으로 사용이 가능하다.

 

일급객체

더보기

아래의 동작이 모두 가능한 객체를 말한다.

  • 리터럴에 의해 생성
  • 변수나 배열의 요소, 객체의 프로퍼티 등에 할당 가능
  • 함수의 인자로 전달 가능
  • 함수의 리턴값으로 리턴 가능
  • 동적으로 프로퍼티를 생성 및 할당 가능

 

 

 

(1) 변수나 프로퍼티의 값으로 할당

함수를 변수,객체의 프로퍼티,배열의 원소 등에 할당이 가능하다.

// 함수를 변수에 할당

let var = 100;
let func = function() {
	return 100;
};

console.log(var);
console.log(func); // (결과값) 둘 다 100



// 함수를 프로퍼티에 할당

var obj = {};
obj.func = function(){return 200;}

console.log(func()) // (결과값) 200

 

(2) 함수 인자로 전달

    let foo = function(x){
        return x;
    };

    function func(){
        return console.log("함수 인자로 전달")
    }
    
    foo(func());	// (결과값) 함수 인자로 전달

 

 

(3) 리턴값으로 활용

// 함수를 리턴하는 foo() 함수 정의

var foo = function(){
	return function(){
   		 console.log("안녕")
    }
}

var font = foo();
font()   // (출력값) 안녕

'자바스크립트' 카테고리의 다른 글

arguments 객체,this 바인딩  (0) 2021.07.26
함수의 다양한 형태  (0) 2021.07.08
함수 호이스팅  (0) 2021.07.05
함수(함수를 정의하는 법)  (0) 2021.07.05
배열(Array() 생성자 함수 , 유사 배열 객체)  (0) 2021.07.05