자바에서 this와 자바스크립트에서 this는 완전히 다른 개념이다. 헷갈리는 기능이지만 함수와 객체의 구분에서 자바스크립트에서는 유일한 기능이다. this는 상황에 따라서 달라진다. this는 실행 컨텍스트가 결정한다. 즉, 함수를 호출할 때 결정된다. 전역공간에서 this는 상위 주체가 없으므로 전역 객체를 가리킨다. undefined가 아니다. 전역객체는 브라우저에서는 window 노드에서는 global이다. 전역변수를 선언하면 자바스크립트 엔진은 걔를 전역 객체의 property로 할당한다.** -> 왜var는 전역객체의 프로퍼티이고 let은 전역객체의 프로퍼티가 안되는지?? 자바스크립트의 모든 변수는 사실 특정 객체(lexical env)의 프로퍼티이다 전역변수에 할당한 값이 찍어도 그 값이 나..
실행 컨텍스트 - 실행코드에 환경정보들을 모아놓은 객체 호이스팅 - 특정 실행 컨텍스트가 활성화 되는 시점에 선언된 변수를 위로? 끌어올린다 ## 1. 실행 컨텍스트 - 콜스택 ** 전역 컨텍스트가 제일 먼저 담긴다. 함수 내부의 코드들로 외부-> 내부순으로 쌓았다가 내부->외부순으로 순차적으로 실행한다. 스택의 꼭대기에 있는 순간이 실행되는 순간이다. - 특정 실행컨텍스트가 활성화 될 때 자바스크립트 엔진은 해당 컨텍스트를 실행하는데 필요한 환경정보들을 실행컨텍스트 객체에 저장한다. - Variable environment: 현재 컨텍스트 내의 식별자들에 대한 정보 + 외부 환경 정보, 정적 상태의 렉시컬 스냅샷 - Lexical environment: 처음엔 변수환경과 같지만 컨텍스트가 런타임에 계속..

자바스크립트에서 데이터는 const let var의 키워드 + 식별자로 선언되고 데이터 타입은 할당시 자동으로 변환된다.(묵시적 형변환). 데이터 타입은 primitive와 reference 타입으로 나누어 진다. - primitive: number, string, boolean/ null, undefined ... symbol - reference: object, Array, Function, Date, Regexp ... Map, WeakMap, Set, WeakSet 등 Primitive :원시 값(primitive, 또는 원시 자료형)이란 객체가 아니면서 메서드도 가지지 않는 데이터입니다.(MDN) primitive는 데이터가 들어있는 주소값이 바로 들어간다. (불변객체. 자바의 Integer, ..