<aside> 📌 요약: 자바스크립트는 인터프리터 언어지만 컴파일러적인 면모가 있다. 자바스크립트는 실행컨텍스트를 콜스택에 쌓으며 동작하는데, 이때 생성단계와 실행단계로 나뉜다. 실행단계에서는 실행컨텍스트 생성과 내부 렉시컬환경에서 Variable Object에 변수와 함수 식별자를 지정한다. 이때 보통 식별자에 대한 값은 초기화 되지 않는데, 함수 선언문은 함수 값까지 초기화되고 var 변수는 undefined가 초기화 되어 호이스팅 된다. 그 다음 실행단계에서는 순서대로 값을 할당하고 코드를 실행한다.
globalThis는 자바스크립트 코드를 파싱하는 환경이 브라우저냐 노드냐에 따라서 각각 window 전역객체, global 전역객체로 파싱된다. window 객체는 창 그 자체이며, document는 title, html등 문서를 가리키는 객체이다.
Number객체나 String객체 같은 것들은 다양한 관련 메서드들을 제공하는데, 원시타입을 감싸는 wrapper 객체이다. new로 생성하면 객체이고, str = ‘’
이나 let num = 10
이런 식으로 생성하면 이는 원시타입이다. 원시타입이긴 하지만 ‘’.repeat()
이나 (10).toString()
처럼 사용할 수 있는데, 이때 묵시적으로 temp를 사용하여 객체로 변환 후 프로토타입 체이닝을 통해서 메서드를 사용하고 다시 원시타입으로 되돌려 놓기 때문에 가능한 작업이다.
undefined, NaN 또한 값이고, isNaN 메서드를 통해서 사용자로부터 입력받는 값이 제대로 입력 되었는지 확인이 가능하다.
Math 객체는 수학 연산 메서드들을 포함하고있고, BigInt타입과 호환되지 않는다. BigInt타입은 10101n
이런 식으로 사용하거나 BigInt(1010)
이런 식으로 변환이 가능하다.
Date 객체는 특정 시점의 날짜를 표시하기 위한 객체이며 날짜와 관련된 작업을 하기 위한 여러 메서드를 포함한다.
JSON 객체도 앞으로 많이 쓸것. JSON.parse(’{}’) → 해당 문자열을 객체로 변환 JSON.stringify({}) → 해당 객체를 문자열로 변환
</aside>