호출 스케줄링 (scheduling a call) 함수를 명시적으로 호출하면 즉시 실행된다. 만약 함수를 명시적으로 호출하지 않고 일정 시간이 경과된 이후에 호출되도록 함수 호출을 예약하려면 타이머 함수를 사용한다. 이를 호출 스케줄링이라 한다. 타이머 함수는 ECMAScript 사양에 정의된 빌트인 함수가 아니다. 하지만 브라우저 환경과 Node.js 환경에서 모두 전역 객체의 메서드로서 타이머 함수를 제공한다. 즉, 타이머 함수는 호스트 객체이다. 타이머 함수 setTimeout & clearTimeout setInterval & clearInterval setTimeout & clearTimeout const timerId = setTimeout(callbackFunc [, delay, parame..
Before you learn ● 스코프(Scope) Closure (클로저) 란? MDN에서는 다음과 같이 클로저를 정의하고 있다. "A closure is the combination of a function and the lexical environment within which that function was declared" 클로저는 함수와 그 함수가 선언된 렉시컬 환경과의 조합이다. // outerFunc 함수 내부에서 중첩 함수 innerFunc가 정의되고 호출되었다. // 이때 중첩 함수 innerFunc의 상위 스코프는 외부 함수 outerFunc의 스코프이다. // 따라서 중첩 함수 innerFunc 내부에서 자신을 포함하고 있는 // 외부 함수 outerFunc의 x 변수에 접근할 수..
조건 1. 무명의 리터럴로 생성할 수 있다. (즉, 런타임 생성이 가능하다.) 2. 변수나 자료구조(객체, 배열 등)에 저장할 수 있다. 3. 함수의 매개변수에 전달할 수 있다. 4. 함수의 반환값으로 사용할 수 있다. JavaScript의 함수는 위의 조건을 모두 만족하므로 일급객체이다. // 1. 함수는 무명의 리터럴로 생성할 수 있다.(즉, 런타임에 생성이 가능하다.) // 2. 함수는 변수에 저장할 수 있다. // 런타임(할당 단계)에 함수 리터럴이 평가되어 함수 객체가 생성되고 변수에 할당된다. const increase = function(num) { return num + 1; }; const decrease = function(num) { return num - 1; }; // 2. 함수는..
함수란? JavaScript에서 반복문, 조건문처럼 가장 중요한 핵심 개념이다. 스코프(Scope), 실행 컨텍스트, 클로저(Closure), 생성자 함수에 의한 객체 생성, 메서드(Method), this, 프로토타입(Prototype), 모듈화 등 모두 함수와 깊은 관련이 있다. 함수의 구성요건 // 함수 리터럴 구성요소 // 함수명 - 함수명은 식별자다. 따라서 식별자 네이밍 규칙을 준수해야한다. - 함수명은 함수 몸체 내에서만 참조할 수 있는 식별자이다. - 함수명은 생략할 수 있다. (기명함수 : 이름이 있는 함수 / 익명함수 : 이름이 없는 함수) // 매개변수 (parameter) - 0개 이상의 매개변수를 소괄호로 감싸고 쉼표로 구분한다. - 각 매개변수에는 함수를 호출할 때 지정한 전달인..