⭐JavaScript의 자료형과 JavaScript만의 특성은 무엇일까 ?
- 느슨한 타입(loosely typed)의 동적(dynamic) 언어
JavaScript는 느슨한 타입(loosely typed)의 동적(dynamic) 언어입니다.
JavaScript의 변수는 어떤 특정 타입과 연결되지 않으며,
모든 타입의 값으로 할당 및 재할당 가능합니다.
- JavaScript 형변환 (Type Casting)
자바스크립트는 타입이 매우 유연한 언어이다. 자바스크립트 엔진이 필요에 따라 암시적변환을
혹은 개발자의 의도에 따라 명시적변환을 실행한다.
- 암시적 형 변환(Implicit type conversion)
암시적 변환이란 자바스크립트 엔진이 필요에 따라 자동으로 데이터 타입을 변환시키는 것이다.
- 명시적 형 변환(Explicit Type Conversion)
명시적 변환이란 개발자가 의도를 가지고 데이터 타입을 변환시키는 것이다.
- ==, ===
자바스크립트는 엄격한 비교와 유형변환 비교를 모두 지원하므로,
어떤 연산자가 어떤 비교조건에 사용되는지가 중요하다.
위에 말했듯이, ===는 변수 유형을 고려하는 반면, ==는 변수 값을 기반으로 유형을 수정한다.
- 느슨한 타입(loosely typed)의 동적(dynamic) 언어의 문제점은 무엇이고 보완할 수 있는 방법 생각하기.
실행 도중에 변수에 예상치 못한 타입이 들어와 타입에러가 발생할 수 있음
동적타입 언어는 런타임 시 확인할 수 밖에 없기 때문에, 코드가 길고 복잡해질 경우 타입 에러를 찾기가 어려워 집니다.
이러한 불편함을 해소하기 위해 TypeScipt나 Flow 등을 사용할 수 있습니다.
- undefined와 null의 미세한 차이들을 비교해보세요.
- undefined
- 값이 할당되지 않은 변수는 기본적으로 undefined 값을 가집니다. 원시 자료형중 하나
- 변수는 존재하나, 어떠한 값으로도 할당되지 않아 자료형이 정해지지(undefined) 않은 상태
- null
- 어떤 값이 비어있음을 의도적으로 표현할 때 사용됩니다. 원시 자료 형중 하나
- 변수는 존재하나 null 로 (값이) 할당된 상태 . 자료형이 정해진 (defined) 상태
⭐JavaScript 객체와 불변성이란 ?
- 기본형 데이터와 참조형 데이터
기본형 타입(Primitive type)
종류: 논리형(boolean), 정수형(int), 실수형(double), 문자형(char)
조형 타입(Reference type)
종류: 배열(Array), 클래스(Class), 인터페이스(Interface)
- 불변 객체를 만드는 방법
'변하지 않는 객체' 즉 이미 할당된 객체가 변하지 않는다는 뜻을 가지고 있다.
- 얕은 복사와 깊은 복사
-얕은 복사
객체를 복사할 때, 해당 객체만 복사하여 새 객체를 생성한다.
복사된 객체의 인스턴스 변수는 원본 객체의 인스턴스 변수와 같은 메모리 주소를 참조한다.
따라서, 해당 메모리 주소의 값이 변경되면 원본 객체 및 복사 객체의 인스턴스 변수 값은 같이 변경된다.
⭐호이스팅과 TDZ는 무엇일까 ?
- 스코프, 호이스팅, TDZ
스코프: 변수, 함수, 클래스가 접근할 수 있는 유효 범위.
호이스팅: 인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것을 의미합니다.
선언된 변수나 함수가 함수의 스코프 최상단으로 끌어올려진다는 의미입니다.
- 함수 선언문과 함수 표현식에서 호이스팅 방식의 차이
- 여러분이 많이 작성해온 let, const, var, function 이 어떤 원리로 실행되는지 알 수 있어요.
- 실행 컨텍스트와 콜 스택
- 스코프 체인, 변수 은닉화
'개발일지. > 항해99' 카테고리의 다른 글
| 항해99 10기 2주차 WIL (0) | 2022.11.21 |
|---|---|
| 항해99 2주차 주특기 과제 (2.실습과제) (0) | 2022.11.18 |
| 1주차 풀스텍 프로젝트 TIL (22.11.14) (0) | 2022.11.16 |
| 항해 0 주차 입학시험 TIL (22.11.09) (0) | 2022.11.11 |
| 항해 0 주차 Pre-Onboarding 2일차 TIL (22.11.08) (0) | 2022.11.08 |