JavaScript (4) 썸네일형 리스트형 [JavaScript] 클로저(closure) 클로저는 자바스크립트 고유의 개념이 아닌 함수를 일급 객체로 취급하는 함수형 프로그래밍 언어에서 사용되는 중요한 특성이다. “함수가 선언됐을 때의 렉시컬 환경(Lexical environment)” function outerFunc() { var x = 10; var innerFunc = function () { console.log(x); }; return innerFunc; } /** * 함수 outerFunc를 호출하면 내부 함수 innerFunc가 반환된다. * 그리고 함수 outerFunc의 실행 컨텍스트는 소멸한다. */ var inner = outerFunc(); inner(); // 10 자신을 포함하고 있는 외부함수보다 내부함수가 더 오래 유지되는 경우, 외부 함수 밖에서 내부함수가 호출.. [JavaScript] Promise / async / awiat Promise 자바스크립트의 비동기 처리에 사용되는 객체로, 동기식 처리처럼 작업의 순서에 따른 실행을 가능하게 합니다. 자바스크립트에서 비동기 처리를 동기 처리로 할 수 있게 하는 Bulit-in(미리 내부적으로 정의된)객체 new Promise(executor); // 예제 화살표 함수 new Promise((resolve, reject) => { //명령문 }); Promise 생성자 인터페이스 executor에는 함수만 올 수 있으며 인자로 resolve, reject가 주입됩니다. executor는 Promise의 실행 함수라고 불리고, Promise가 만들어질 때 자동으로 실행됩니다. Promise가 연산을 언제 종료하는지 상관하지 않고, resolve, reject 중 하나를 무조건 호출해야.. [JavaScript] 동기(Synchronous)와 비동기(Asynchronous) 동기(Synchronous)와 비동기(Asynchronous) 동기식 동기 방식은 요청을 보냈을 때 응답이 돌아와야 다음 동작을 수행할 수 있다. 즉 A작업이 모두 진행 될때까지 B작업은 대기해야한다. 실제로 속도가 느려진 것은 아니지만 작업의 효율이 내려간다 설계가 간단하고 직관적이지만, 결과를 볼 때까지 다른 작업을 할수 없다는 단점이 있다. function func1(){ console.log("1번입니다"); func2(); } function func2(){ console.log("2번입니다"); func3(); } function func3(){ console.log("3번입니다"); } func1(); //1번입니다 //2번입니다 //3번입니다 비동기식 비동기 방식은 반대로 요청을 보냈을 때.. [JavaScript] 이벤트 루프, 콜백 함수 자바스크립트의 특징 자바스크립트는 단일 스레드 기반의 언어로 한 번에 하나의 작업만을 처리할 수 있다. 비동기로 동작하기 때문에 단일 스레드임에도 동시에 많은 작업을 수행한다. 하지만 비동기로 동작하는 핵심 요소는 자바스크립트가 아닌 브라우저가 가지고 있다. 이벤트 루프란? 태스크가 들어오길 기다렸다가 태스크가 들어오면 이를 처리하고, 처리할 태스크가 없는 경우엔 잠드는, 끊임없이 돌아가는 자바스크립트 내 루프 Heap : 메모리 할당이 발생하는 곳 Call Stack : 실행된 코드의 환경을 저장하는 자료구조로, 함수 호출 시 이곳에 저장된다. 어떤 함수를 저장하면 스택에 쌓고 또 다른 함수를 호출하면 그 다음 스택에 쌓이면서 가장 위에 쌓인 함수를 가장 먼저 처리한다. LIFO(Last In Firs.. 이전 1 다음