[JavaScript] First-Class Citizen

3883 단어 JavaScriptJavaScript

First-Class Citizen (1급 시민)

정의

First-Class Citizen (First-class object)이란, 보통 다른 객체들에게 적용이 가능한 연산을 모두 지원하는 객체를 말한다. 보통 매개변수로 전달되고, 함수에서 반환되며 변수에 할당되는 작업들이 포함된다고 할 수 있다. 즉, 프로그래밍 언어에서 Type을 전달, 반환, 할당할 수 있는 경우 해당 Type을 1급 시민으로 간주한다고 할 수 있다.

JavaScript에서는 함수를 반환값으로 사용할 수 있고, 함수를 파라미터로 전달하여 인자로 사용할 수도 있기 때문에 JavaScript에서의 함수는 1급 시민이라고 할 수 있다.

조건

  1. 변수나 데이터 구조 안에 담을 수 있다.
  2. 파라미터로 전달할 수 있다.
  3. 반환 값으로 사용될 수 있다.
  4. 할당에 사용된 이름과 관계없이 고유하게 구별할 수 있다.
  5. 동적으로 프로퍼티를 할당할 수 있다.

예제

// 숫자, 문자열 등과 같이 변수에 담을 수 있는 자료형은 1급 시민이다.
let num = 1
let str = "Nine"

// 조건문은 변수의 값이 될 수 없으므로, 1급 시민이 아니다. (2급 시민이다.)
// let val = if(some Bool) {
//   doSomething;
// }

// 함수는 JavaScript에서 변수에 할당될 수 있으므로, 1급 시민이다.
const val2 = function(num) {
    return num*2
}

// JavaScript에서 함수는 1급 시민이므로, 반환값으로 사용할 수 있다.
function fn(num) {
    let val = function(num) {
        return num * num
    }  
    return val;
}
 
// 함수의 인자 값으로 함수를 받을 수 있다. 
function fn2(func, num) { 
  return func(num) 
}   
 
fn2(fn, num) 

좋은 웹페이지 즐겨찾기