본문 바로가기

JavaScript

(34)
eager evaluation과 lazy evaluation 프로그래밍 언어에서 '표현식'이라는 용어는 리터럴, 연산자, 변수,함수 호출등이 복합적으로 구성된 코드를 말합니다. 예를 들어, 1 + 2는 1과 2라는 리터럴과 덧셈연산자 + 로 구성된 표현식입니다. 표현식은 항상 컴파일러에 의해 계산법(evalutaion)이 적용되어 어떤 값이 됩니다. 1 + 2 표현식은 컴파일러에 의해 3이라는 값이 됩니다. 이와 같이 컴파일러는 표현식을 마주치면 계산법(evalutaion)을 적용해서 어떤 값(value)를 만듭니다. 계산법에는 조급한 계산법 (eager evaluation) 과 느긋한(또는 지연) (lazy evalutaion) 두가지가 있습니다. 1 + 2 예제의 경우는 eager evaluation을 적용한 것입니다. 컴파일러가 함수를 표현식을 마주친다고 해..
[Modern JavaScript Deep Dive] closure 클로저는 함수를 일급 객체로 취급하는 함수형 프로그래밍 언어 (예: 하스켈, 리스프, 얼랭, 스칼라등)에서 사용되는 중요한 특성이다. 클로저는 자바스크립트 고유의 개념이 아니므로 글로저의 정의가 ECMAScript 사양에 등장하지 않는다. MDN 에서는 클로저를 다음과 같이 정의한다. A closure is the combination of a function and the lexical enviroment within which that function was delared. 클로저는 함수와 그 함수가 선언된 렉시컬 환경과의 조합이다. const x = 1; function outerFunc() { const x = 10; function innerFunc() { console.log(x); // 10..