실행 컨텍스트는 실행할 코드에 제공할 환경 정보들을 모아놓은 객체입니다. 자바스크립트는 어떤 실행 컨텍스트가 활성화되는 시점에 선언된 변수를 위로 끌어올리고(호이스팅, hoisting) 외부환경 정보를 구성하고, this 값을 설정하는 등의 동작을 수행합니다. 실행 컨텍스트는 실행할 코드에 제공할 환경 정보들을 모아놓은 객체라고 했는데, 동일한 환경에 있는 코드들을 실행할 때 필요한 환경 정보들을 모아 컨텍스트를 구성하고 이를 콜스택(call stack)에 쌓아두었다가 가장 위에 쌓인 컨텍스트와 관련있는 코드들을 실행하는 식으로 전체 코드의 환경과 순서를 보장합니다. '동일한 환경'은 하나의 실행 컨텍스트를 구성할 수 있는 방법으로 전역공간, eval() 함수, 함수 등이 있습니다. *ES6에서는 블록에..
둘다 '없음'을 나타낼때 사용하고는 합니다. 의미는 같을 수 있으나 사용하는 목적을 정확히해야 혼란을 줄일 수 있습니다. undefined undefined는 사용자가 명시적으로 지정할 수도 있지만, 값이 존재하지 않을때 자바스크립트 엔진이 자동으로 부여하는 경우도 있습니다. 1) 값을 대입하지 않은 변수(데이터 영역의 주솟값이 없는 식별자)에 접근할때나 2) 객체 내부에 존재하지 않는 프로퍼티에 접근하려고할때, 3) return 문이 없거나 호출되지 않는 함수의 실행결과에서 자바스크립트 엔진은 undefine를 반환합니다. 1) 값을 대입하지 않았을 경우 var name; console.log(name); // undefined 2) 객체 내부에 존재하지 않는 프로퍼티에 접근 var person = {..
데이터 타입의 종류 기본형 타입(Primitive Type) 참조형 타입(Reference Type) 숫자(Number) 문자열(String) 불리언(Boolean) null undefined 심볼(Symbol) 객체(Object) 배열(Array) 함수(Function) 날짜(Date) 정규표현식(RegExp) Map WeakMap Set WeakSet 기본형 타입(Primitive Type) 기본형 타입의 종류에는 숫자, 문자열, 불리언, null, undefined, symbol이 있습니다. 일반적으로 기본형은 '할당이나 연산시 데이터가 복제'된다고 알려져있습니다. 기본형 타입의 메모리 저장 방식 *메모리 할당영역, 주솟값에 대한것은 이해를 돕기위한 개략적인 이미지들이 등장합니다. 메모리 할당 시 ..
변수(Variable)와 식별자(Identifier) 들어가기 전에... 사람들은 변수(Variable)와 식별자(Identifier)를 혼용하는 경우가 많습니다. "내가 혼용했었나?"라고 의문이 들면서 이해가가지 않을 수도 있습니다. 혼용을 하면서도 인지하지 못하는 경우가 많기 때문인데, 첫번째로는, 대화의 문맥에 따라 혼용하더라도 상대방이 어떠한 말을 하는지 유추할 수 있기 때문이고 두번째로는, 애초에 혼용해서 사용해왔기때문에 그 차이를 이해하지 못하고 같은 의미로 사용하기때문입니다. "변수 name을 선언 안 한 것 같은데" 가 아닌, "식별자 name을 선언 안 한 것 같은데" 가 정확한 문장이라면 읭? 이러실 수도 있습니다. 제가 읭? 이랬거든요. 변수(Variable) 변수라는 이름은 '변할 ..