JavaSciprt4 [자바스크립트] 동기 , 비동기 그리고 태스크 큐, 마이크로 태스크 큐 동기 , 태스크 큐, 마이크로 태스크 큐 JavaSciprt는 하나의 싱글쓰레드를 사용하며, 스택에서 모든 이벤트를 처리하고 기본적으로 "동기"적으로 한번에 하나의 작업만을 수행할 수 있는 언어이다. 자바스크립트의 모든 이벤트는 콜 스택에서 처리하게 되고 스택은 LIFO의 형태로 나중에 들어온 이벤트를 우선 적으로 처리한다. #스택 실행컨텍스트 const bar = () =>{ console.log('bar'); } const foo = () =>{ bar(); console.log('foo'); } foo() 실행 순서는 1. foo()를 실행하며 콜 스택에 배치 스택 순서 foo() 2, foo함수 내부의 지역스코프상 동지거 우선권인 bar()를 콜 스택에 배치 스택 순서 foo() bar() 3, .. 2024. 3. 2. [자바스크립트] 일급객체 [자바스크립트] 일급객체 #일급객체 일급객체는 JavaSciprt의 만의 개념이 아닌 프로그래밍에서 중요한 개념으로 일급시민(first class citizen)의 뜻을 모티브로 특정 조건을 만족하는 자유도가 매우 높은 객체를 말한다. #일급객체 조건 1) 변수나 데이터 구조 안에 담을 수 있어야 한다. //변수에 담을 수 있는 일급객체 const func = function(){ console.log('일급객체'); } //데이터 구조에 담을 수 있는 일급객체 const obj = { test : func //참조할당 } obj.test() 2) 함수의 반환값으로 사용할 수 있어야한다. function funcOuter(){ function funcInner(){ return '일급객체는 함수를 리턴한.. 2024. 1. 15. [자바스크립트] 클로저 , [[Enviroment]] [자바스크립트] - 클로저 , [[Enviroment]] #클로저? 클로저란 JavaSciprt만의 고유 개념이 아닌 함수형 프로그래밍 언어의 중요한 특성이다. 클로저에 대한 이해를 돕기위한 선행 지식으로 "스코프" , "[[Enviroment]]" , "렉시컬 환경" , "렉시컬 스코프"를 알아야 이해 하기가 편하다. 클로저에 대한 내 이해를 한줄로 요악하자면 "중첩함수의 개념으로 외부함수의 생명주기(ex. 실행컨텍스트)가 종료되어도 내부함수에서 외부함수 내 변수를 캡처하여 사용 할 수 있는 개념" 내부슬롯은 [[Enviroment]]은 상위 스코프의 렉시컬 환경을 참조한다. 렉시컬 환경은 함수가 실행됨에 따라 #함수객체의 내부 슬롯 [[Enviroment]] 내부슬롯이란 ECMASciprt JavaS.. 2024. 1. 13. [자바스크립트] - Scope [자바스크립트] - Scope 자바스크립트에서 스코프란? ◆ 스코프란 변수의 값이 참조하여 바인딩 될 수 있는 범위를 말한다. 스코프는 자바스크립트에서만 쓰이는 개념이 아닌 컴퓨터 언어에서 중요한 역할을 한다. 하지만 자바스크립트에서 스코프는 조금 관대하기 때문에 주의가 필요하고 각 변수 선언 방식 let, const ,var에 의해 스코프가 다르게 동작 하기도 한다. 일단 렉시컬 스코프 , 렉시컬 환경에 대해서도 알고 있어야 스코프를 이해하기 편하다. 일단 스코프는 '범위' 라고 이해를 한다고 하면 간단하게 이해가 가능하고, 렉시컬 스코프 역시 범위를 정의한다. 하나의 변수는 렉시컬 스코프를 가지게 되는데 이 스코프는 선언되는 위치에 따라서 정의가 변동이 되고, 어디까지 해당 변수에 영향을 미치는지 범.. 2023. 12. 28. 이전 1 다음