undefined 는 JS에서 데이터가 없을때 내보내고 null 은 개발자가 값이 없음을 명시하기 위해서 사용
null만 쓰셈
내가 할당한 undefined와 자바스크립트가 자동으로 할당해준 undefined의 차이
내가 할당한 undefined : ‘undefined’ 라는 값(null과 비슷)
자바스크립트가 할당한 undefined : 없다 라는 뜻의 undefined
empty와 undefined의 차이
콜백함수에서 다뤄지는 유무 empty → X, undefined → O
어떤 변수의 값이 null인지를 판별하게 위한 방법
일치연산자(===)
typeof null 은 object
실행 컨텍스트
스택과 큐의 차이점
스택은 들어온 순서와 나가는 순서가 반대, 큐는 들어온 순서대로 나간다. 바구니와 매표소
LexicalEnvironment와 VariableEnvironment의 차이
VariableEnvironment(초기 시점)가 LexicalEnvironment(변경사항이 반영된다)의 스냅샷(생성 시점에 대한 정보의 차이).
LexicalEnvironment를 구성하는 것이 무엇이고 각각의 역할이 무엇인지(스코프 포함)
environmentRecord
var 식별자와 함수 선언문, 매개변수명을 수집함 : 호이스팅 Hoisting
var과 let의 차이점
var 식별자만 호이스팅? let, const, class는 블록스코프 기준에서 호이스팅됨
outerEnvironmentReference
선언될 당시의 LexicalEnvironment(외부 컨텍스트) 를 참조 → 스코프 체이닝을 가능케함
호이스팅이 뭐고 어떻게 되는지
식별자 정보를 한번 쭉 훑어봄: var 선언과 함수 선언문
호이스팅에 대해 설명해보세요다른 언어와 달리 자바스크립트는 실제로 선언된 위치와 상관 없이 최상단으로 선언부가 끌어올려지기에 선언 위치 앞에서도 호출이 가능한데, 함수, var, let, const 에 따라 그 경우가 달라집니다.또한 호이스팅은 코드의 가독성을 해칠 수 있으므로, 변수와 함수는 사용하기 전에 명시적으로 선언하는 것이 좋습니다.
함수의 경우 어디서든 호출이 가능하고 제대로 작동됩니다. 하지만 var의 경우에는 선언 전에 호출 시 undefined를 반환합니다. 그런데 이 var가 오히려 오류를 안 내서 어디서 오류가 났는지 바로 확인이 어렵기 때문에 const와 let은 선언 전에 호출 시 에러를 내보내게 되었습니다. 물론 에러는 내보내지만 초기화되지 않은 상태로 호이스팅 된다는 점이 있습니다.
호이스팅은 변수와 함수 선언이 그들이 속한 스코프의 최상단으로 끌어올려지는 동작을 말합니다.
호이스팅 할 때 함수 선언문과 표현식의 차이
함수 선언문 : 함수 전체를 호이스팅
함수 표현식 : 식별자만 호이스팅
콜 스택에 실행 컨텍스트가 어떤 순서로 쌓이고, 어떤 순서로 코드 실행에 관여하는지 전체적인 과정
함수가 실행되는 순서로 컨텍스트가 콜 스택에 아래부터 하나씩 쌓이고, 콜 스택(그릇)바깥과 가까운 컨텍스트부터 하나씩 실행되며 없어진다.