목록자바스크립트 (13)
min
1. 스코프의 정의 : 스코프를 한 문장으로 표현하면 "식별자(변수, 함수, 클래스 이름)의 유효범위"이다. 즉 식별자를 어느 범위까지 사용할 수 있는 지를 나타내는 개념이다. 그렇다면 실제로 식별자의 유효범위는 어떻게 될까? 쳅터 2에서는 스코프 실습을 통해 알아보도록 하겠다. 2. 스코프 실습 예를 들어 다음과 같은 코드가 있다고 하자 function a() { var text = "b"; console.log(text) // 1. } a() console.log(text) // 2. 먼저 1.에 찍히는 값은 무엇일까? 이 값에 대해서는 큰 고민 없이 b라고 대답할 수 있다. 하지만 2. 에 찍히는 값에 대해서 묻는 다면 대답하기 힘들 것이다. 그 이유는 2. 과정을 설명하기 위해 스코프라는 개념이 ..
1. 변수의 생명주기의 정의 : 변수의 생명주기의 의미는 해당 변수가 메모리에 얼마나 존재하고 있는지를 나타내는 것이다. 정확하게 말하면 변수가 메모리에 들어가는 순간부터 시작해 사라지는 순간까지를 의미한다. 2. 지역 변수의 생명주기 : 지역 변수의 생명주기는 해당 지역변수를 담고 있는 함수의 생명주기와 동일시 된다. 실행 컨텍스트에서 variable environment와 lexical environment 정확히는 레코드에 식별자에 대한 정보가 들어간다. 그리고 이 식별자에 대한 정보는 실행 컨텍스트가 실행 컨텍스트 스택에서 없어질 때까지 메모리에 잔류하고 있다. 3. 전역 변수의 생명주기 : 전역 변수의 생명주기는 해당 전역변수를 담고 있는 전역 컨텍스트의 생명주기와 동일시 된다. 이 때 전역 컨..
1. 실행 컨텍스트의 정의 실행 컨텍스트를 한 문장으로 표현하자면 "실행과 관련된 요소들의 집합"이라고 볼 수 있다. 그럼 여기서 이런 의문이 들 수 있다. "그렇다면 실행과 관련된 정보들은 어떤 것들이 있는데?". 그래서 챕터 2에서는 실행 컨텍스트의 구성 요소에 대해서 알아볼려고 한다. 2. 실행 컨텍스트의 구성 요소 variable environment : variable environment는 크게 2가지로 이루어져 있다. 첫번째는 record로 "식별자" (변수 , 함수 , 클래스 등의 이름) 에 대한 정보가 담겨 있다. 두번째는 outer로 자기 자신보다 상위에 있는 실행컨텍스트의 lexical environment가 들어 있다. lexical environment : lexical envir..
오늘은 async / await와 promise사이에 차이점에 대해서 알아볼려고 한다. 1. async / await와 promise사이에 차이점 먼저 async await와 promise 모두 자바스크립트에서 비동기 작업을 처리하는데 쓰인다. 다만 처리 방식에서 차이점이 발생한다. 첫번째 async await에서 비동기 작업을 동기적으로 바꿔주기 위해서 둘을 같이 쓰게 된다. 이때 promise와의 차이점은 promise의 경우에는 then이라는 메소드를 통해서 해당 문제를 처리한다는 점에서 차이가 있다. 이때 promise의 경우에는 promise 체이닝이라는 구조가 나올 수 있기 때문에 여러 비동기함수를 호출할 때는 적절하지 않는 방식이다. 따라서 위 경우에서는 promise보다는 async / a..
오늘은 var let const의 차이점에 대해서 같이 이야기를 나눠 볼려고 한다. 1. var , let , const의 차이점이 무엇이냐? : var , let , const의 경우에는 2가지 차이점이 있다. 첫번째는 선언단계와 초기화 단계가 동시에 이루어지느냐이다. 두번째 변수의 스코프이다. 첫번째 선언단계와 초기화 단계가 동시에 이루어지느냐에 대한 var의 경우에는 동시에 이루어진다. 이는 런타임이전에 var의 경우에는 선언과 초기화가 동시에 이루어진다는 것이고 이는 결과적으로 선언한 위치보다 그 앞전에 var를 호출할 수 있다는 것이다. 반면 let, const의 경우 선언단계와 초기화 단계가 동시에 이루어지지 않는다. 이는 런타임이전에는 var와 마찬가지로 선언단계가 이루어지지만 초기화 단계는..
오늘은 자바스크립트에서 굉장히 중요한 개념인 호이스팅에 대해서 알아볼려고 한다. 정확히 말하자면 호이스팅이 어떤 개념이 이 개념이 어떻게 적용되는지에 대해서 살펴보려고 한다. 1. 호이스팅이란? 호이스팅이란 변수나 함수 선언이 자신이 속한 스코프에서 가장 최상단에 위치한다는 것을 의미한다. 이는 실제적인 코드자체가 위로 올라간다느 개념보다는 자바스크립트 해석 엔진이 코드를 판독하고 해석할 때 적용되는 기준이라고 생각하면 편하다. 2. 호이스팅의 종류란? 호이스팅은 크게 2가지로 나뉜다. 첫번째는 변수 호이스팅이다. 두번째는 함수 호이스팅이다. 3. 호이스팅의 필요성 호이스팅은 자바스크립트 엔진이 코드를 해석할 때 적용되는 기준이다. 그 만큼 자바스크립트 코드를 디버깅하거나 자바스크립트 코드를 작성할 때 ..
오늘은 any와 unknown의 차이점에 대해서 알아볼려고 한다. 이 말을 들었을 때 다음과 같은 생각이 들 것이다. any는 어떤 거고 , unknonw은 어떤 것이길레 둘의 차이점을 분석하는 것일까? 이 질문에 대한 답을 얻기 위해서 먼저 any와 unknown이 무엇인지 부터 알아보도록 하겠다. 1. any와 unknown의 공통점이란? any와 unknown는 모두 어떤 값에든 할당 될 수 있는 타입이다. 이는 결국 수동적인 타입을 의미한다. 이런 any와 unknown은 수동적인 타입이다보니 정적 타입 언어인 typescript의 장점을 살리는 데 있어서는 좋지 못한 타입이다. 그렇다면 왜 이런 any와 unknown이 만들어진 것일까? 그 이유는 사실상 자바스크립트에 답이 있다. 자바스크립트의..
오늘은 신범님과 나영님이 스코프에 대해서 설명해 주었다. 그래서 스코프에 대한 블로그를 보면서 나는 스코프를 알기 위해서는 VE와 LE를 알야야 겠다고 생각이 들었다. 그래서 나는 왜 이런 생각이 들었는지의 배경과 실제로 어떤 관련이 있는지에 대해서 살펴보려고 한다. 1. VE와 LE 그래서 도대체 뭔대???! VE,LE는 실행컨텍스트에 담기는 내용들이다. 여기서 실행컨택스트가 머지? 라는 궁금중이 들 수 있다. 실행 컨텍스트는 코드의 실행과 관련된 정보들이 들어있는 객체다. 그리고 이 객체에는 VE,LE,this binding이 들어있다. 이때 VE는 레코드, outer로 이루어져있다. 여기서 레코드는 실행에 필요한 변수들의 식별자가 들어있다. 그리고 outer의 경우에는 outerLE의 줄임말로 콜스..