앞선 포스팅에서도 언급했듯이 JavaScript는 함수 지향 언어이다. 자바스크립트에서는 함수가 1급 시민(First Class Citizen)이므로 함수형 프로그래밍을 지원한다. 그렇다면 1급 시민이란 무엇일까? 이번 포스팅에서는 1급 시민(First Class Citizen)과 1급 객체(First Class Object), 그리고 콜백함수(Callback Function)에 대해 정리하고자 한다. 1급 시민(First Class Citizen)JavaScript를 포함한 함수형 프로그래밍 언어에서 1급 시민의 조건은 다음과 같다.변수(variable)에 담을 수 있다.다른 함수에 인자(parameter)로 넘길 수 있다.반환값(return value)로 전달할 수 있다.// 변수에 담을 수 있다..
JavaScript는 함수 지향 언어이다. 그리고 자바스크립트에서 중요한 개념 중 하나인 클로저(Closure)는 함수를 일급 객체로 취급하는 함수형 프로그래밍 언어에서 사용되는 중요한 특성이다. 클로저(Closure)의 개념 클로저는 자바스크립트만의 고유한 개념은 아니지만, MDN은 다음과 같이 클로저에 대해 정의하고 있다. 클로저는 함수와 함수가 선언된 어휘적 환경(Lexical Environment)의 조합이다. 조금 더 쉽게 설명하자면, 함수가 속한 렉시컬 환경(Lexical Environment)을 기억해서 함수가 렉시컬 환경 밖에서 실행될 때도 상위 스코프에 접근할 수 있는 방식을 말한다. 여기서 렉시컬 환경(Lexical Environment) 또는 렉시컬 스코프(Lexical Scope)란..
변수(variable)란 데이터(data)를 저장할 수 있는 메모리 공간을 의미하며, 그 값이 변경될 수 있다. 변수는 코드에서 중요한 역할을 맡고 있다. 변수가 없다면 일일히 값을 직접 입력하거나 하나하나 바꿔야할 것이다. 자바스크립트에서는 var, let, const 키워드를 사용하여 '변수'를 선언한다. ES5까지는 var 키워드만 사용되었는데, ES6부터는 let과 const라는 키워드가 생겼다. 그렇다면 왜 자바스크립트는 변수를 만들 때 var와 let, const 중 하나를 선택하게 해두었을까? var let const Global Scope yes no no Script Scope no yes yes Function Local Scope yes yes yes Block Scope no yes..
자바스크립트의 코드가 실행되는 원리인 excute context에 대한 내용을 정리해보면서 변수의 유효 범위에 대해서도 함께 이해할 수 있도록 정리해보자. 실행 컨텍스트 (Execute Context )란? 실행할 코드에 제공할 환경 정보들을 모아놓은 객체 자바스크립트의 동적 언어로서의 성격을 가장 잘 파악할 수 있는 개념 자바스크립트는 동일한 환경에 있는 정보들을 모은 실행 컨텍스트를 Call Stack (콜스택) 에 쌓아올린 후 실행하여 코드의 환경과 순서를 보장할 수 있게 된다. 여기서 환경은 global context (전역 환경) 이 될 수도 있고, function context (함수 내부 환경)이 될 수도 있다. 실행 컨텍스트의 종류 전역 실행 컨텍스트 (Global Execution Con..