자바스크립트에서는 함수도 객체다.
그래서 함수는 코드 실행뿐만 아니라, 함수 자체가 일반 객체처럼 프로퍼티들을 가질 수 있다.
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) 변수나 프로퍼티의 값으로 할당
함수를 변수,객체의 프로퍼티,배열의 원소 등에 할당이 가능하다.
// 함수를 변수에 할당
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 |