본문 바로가기

javascript93

closure colsure는 함수와 그 함수가 선언될 때의 렉시컬 환경(지역 변수, 상위 스코프의 변수, 전역 변수)의 조합이다. 이를 통해 내부 함수는 선언될 당시의 변수와 함수에 접근할 수 있게 되며 이러한 특성은 함수형 프로그래밍 패턴에 매우 유용하게 사용된다. 함수형 프로그래밍 패러다임은 순수 함수와 불변성, 데이터 변환의 중요성을 강조하며 클로저는 이러한 패러다임을 구현하는데 있어서 핵심적인 도구 중 하나이다. 데이터 캡슐화, 커링, 상태보존 이벤트 핸들러 등이 있다. 클로저의 동작 원리는 1. 함수내부에서 다른 함수를 선언하고 2. 내부 함수가 외부 함수의 스코프에 있는 변수를 참고하고자 할 때, 3. 외부함수가 실행을 마치고 반환된 후에도 내부 함수는 외부 함수의 변수에 대한 참조를 유지함. 4. 이러한.. 2024. 3. 27.
scope 함수가 선언될 당시의 렉시컬 환경을 기억하는 함수이다. 함수가 선언될 당시의 주변 환경(지역변수, 상위 스코프의 변수, 전역변수)을 기억한다. 내부 함수는 자신을 둘러싼 외부 함수의 변수에 접근할 수 있고, 이는 내부 함수가 외부 함수의 스코프에 있는 변수들을 기억하기 때문이다. 예제를 통해 좀 더 깊게 알아보자. 1. 내부함수 + 외부함수 function outerFunction() { var outerVar = 'i am from outerFunction'; function innerFunction1() { console.log(outerVar); } function innerFunction2() { var outerVar = 'i am from innerFunction2'; innerFunction.. 2024. 3. 26.
hoisting 자바스크립트에서 호이스팅은 중요한 개념이다. 자바스크립트 파일이나 스크립트를 실행하게되면 v8엔진으로 해석하게되는데 이때 인터프리팅 과정과 컴파일 과정이 이루어지게 된다(이 두 과정을 거치는걸 JIT, Just-In-Time 이라고하며 여러번 코드가 실행되면서 이전에 컴파일 결과를 재사용한다). 호이스팅은 v8엔진이 코드를 실행하기 전에 선언을 해당 스코프의 최상단으로 끌어올리는 것이다. 오늘은 호이스팅과 관련된 문제들을 살펴보며 호이스팅에 대해 깊이 생각해보려고한다. 1. var + 함수선언식 console.log(myFunc); var myFunc = 'Hello, World!'; function myFunc() { console.log('Function called'); } myFunc(); 자바스.. 2024. 3. 26.
자바스크립트의 비동기처리 싱글스레드 위에서 효율적으로 동작하기 위해 자바스크립트는 비동기처리를 한다. 만약 api요청과 사용자의 이벤트 발생이 동시에 일어날 경우 어떻게 될지 궁금해졌다. api요청 2개(마이크로태스크큐), 사용자가 클릭이벤트(메시지큐)를 3번 일으킨다면 어떻게 될까? 이 궁금증을 해결하기 위해 조사해보았다. 실행순서로는 1. 현재 실행중인 스크립트나 매크로 태스크(메시지큐)가 완료. 2. 이벤트 루프는 마이크로태스크큐를 확인하여 그 안의 모든 작업들을 처리함. 마이크로태스크 큐 2개의 작업을 순서대로 처리함. 3. 마이크로태스크큐의 작업이 모두 끝나면 이벤트 루프는 메시지 큐로 넘어가 첫번째 매크로태스크를 콜스택으로 이동시키고 실행함. 4. 이벤트 루프는 다시 마이크로태스크 큐를 확인함. 만약 새로운 마이크로태.. 2024. 3. 18.