본문 바로가기

Back-End/Node.js

Node.js.41.JavaScript-객체-값으로서 함수

반응형

목표

OOP(Object Oriented Programming)에 필요한 기능 알아보기

 


'프로그래밍을 한다'는 말은

1. 데이터

2. 그 데이터를 처리하는 것

두 가지로 이뤄져 있다.

 

데이터를 잘 정리정돈하는 것으론 array, object가 있다.

또 다른 코드와 구분하기 위해 연관된 것을 그룹핑하기 위해서 함수를 사용했었다. 자바스크립트에서 함수는 처리해야 할 일에 대한 정보를 가지고 있는 일종의 구문(statement)이면서, 동시에 이라고도 할 수 있다.

쉽게 생각해서, 우선은 함수를 변수에 넣을 수 있다면 값이라고 생각하자. 

(ex)

var i = if(true){console.log(1);} //ERROR

자바스크립트에서는 조건문 구문이 값이 아니기 때문에 에러가 발생한다.

var w = while(true){console.log(1)};  //ERROR

while이라는 statement 또한 값이 될 수 없다.

 

그렇다면 function f1은 값이 될 수 있을까?

var f = function() {
  console.log(1+1);
  console.log(1+2);
}
console.log(f);
f();

자바스크립트에서는 function의 statement가 다른 statement와는 다르게 값이 될 수 있다. 즉, 처리방법들을 담고 있는 구문이면서 동시에 그것 자체가 값이 될 수가 있다.

 

(예제1)

var a = [f];  //[f]: 함수f가 담긴 배열
a[0](); //2 3

배열의 원소로서 함수가 존재할 수 있다.

 

(예제2)

var o = {
  func: f
} //func: 객체의 속성(property)
o.func(); //2 3 //o.func() == f

객체의 속성에 대한 값으로 함수가 존재할 수 있다.

 

배열에 함수를 담는 경우는 드물지만, 객체는 이름이 있기 때문에 이름으로 함수를 꺼내는 용도로 자주 사용한다.

 


요약

자바스크립트에서 함수는 이므로, 배열과 객체에 담을 수 있다.

 

반응형