티스토리 뷰
undefined와 null
- undefined와 null의 차이
- 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(외부 컨텍스트) 를 참조 → 스코프 체이닝을 가능케함
- environmentRecord
- 호이스팅이 뭐고 어떻게 되는지
- 식별자 정보를 한번 쭉 훑어봄: var 선언과 함수 선언문
- 호이스팅에 대해 설명해보세요다른 언어와 달리 자바스크립트는 실제로 선언된 위치와 상관 없이 최상단으로 선언부가 끌어올려지기에 선언 위치 앞에서도 호출이 가능한데, 함수, var, let, const 에 따라 그 경우가 달라집니다.또한 호이스팅은 코드의 가독성을 해칠 수 있으므로, 변수와 함수는 사용하기 전에 명시적으로 선언하는 것이 좋습니다.
- 함수의 경우 어디서든 호출이 가능하고 제대로 작동됩니다. 하지만 var의 경우에는 선언 전에 호출 시 undefined를 반환합니다. 그런데 이 var가 오히려 오류를 안 내서 어디서 오류가 났는지 바로 확인이 어렵기 때문에 const와 let은 선언 전에 호출 시 에러를 내보내게 되었습니다. 물론 에러는 내보내지만 초기화되지 않은 상태로 호이스팅 된다는 점이 있습니다.
- 호이스팅은 변수와 함수 선언이 그들이 속한 스코프의 최상단으로 끌어올려지는 동작을 말합니다.
- 호이스팅 할 때 함수 선언문과 표현식의 차이
- 함수 선언문 : 함수 전체를 호이스팅
- 함수 표현식 : 식별자만 호이스팅
- 콜 스택에 실행 컨텍스트가 어떤 순서로 쌓이고, 어떤 순서로 코드 실행에 관여하는지 전체적인 과정
- 함수가 실행되는 순서로 컨텍스트가 콜 스택에 아래부터 하나씩 쌓이고, 콜 스택(그릇)바깥과 가까운 컨텍스트부터 하나씩 실행되며 없어진다.
- 전역 변수와 지역 변수의 차이
- 전역변수 : 전역 컨텍스트의 LexicalEnvironment에 담긴 변수
- 지역변수 : 그 외 모두
- 안전한 코드 구성을 위해 가급적 전역변수 사용 최소화
'TIL > 일기, 공부 내용 정리' 카테고리의 다른 글
콜백함수와 클로저 (1) | 2024.12.24 |
---|---|
This와 명시적 This 바인딩 (2) | 2024.12.19 |
기본형과 참조형, 불변 객체 정리 (0) | 2024.12.16 |
tanstack query를 조금 연습해야겠다 (2) | 2024.10.24 |
팀 과제 스밋 - 와이어프레임 만들기, 기능 세분화, 간단한 역할 분담 (1) | 2024.10.18 |