이 글은 저서 [인사이드 자바스크립트]를 공부하고자 작성되었으며, 핵심 개념과 새롭게 알게 된 내용을 위주로 기록하였습니다.
이 장에서 다루는 내용
이러한 타입의 특징은 그 자체가 하나의 값을 나타낸다는 것.
C언어는 엄격한 타입 체크 언어다.
변수를 선언할 때 char, int, float와 같은 예약어를 이용해 변수의 데이터 타입을 지정한다.
하지만 js는 변수를 선언할 때 타입을 미리 정하지 않고,
var, const, let 과 같은 키워드로 변수를 선언한다.
자바스크립트는 하나의 숫자형만 존재한다.
모든 숫자를 64비트 부동 소수점 형태로 저장하기 때문이다.
이는 C언어의 double 타입과 유사하다.
정수나 실수 구분 없이 그 값을 바로 저장할 수 있다.
var num = 5 / 2;
console.log(num) // 2.5
console.log(Math.floor(num)) // 2
JS에서 한번 정의된 문자열은 바뀌지 않는다.
문자열 생성
var str = "test";
console.log(str[0]) // t
str[0] = 'T'
console.log(str[0]) // t
위와 같이 변경해도, 에러는 발생하지 않지만 값이 변경되진 않는다.
Q. 왜 안바뀌지???
->
typeof에서 boolean으로 출력된다.
공통점
'값이 비어있음'을 뜻한다.
차이점
- undefined : 값이 할당되지 않음. 타입이자 값을 나타낸다.
- null : 명시적으로 값이 비어있음을 나타낸다.
typeof로 null 타입 변수의 타입을 확인하면 그 결과가 null이 아니라 object로 확인된다.
그러므로 null 타입 변수인지 확인하려면 typeof 연산자가 아니라 일치 연산자(===)를 사용해 변수의 값을 직접 확인해야한다.
null은 객체 타입이 아닌 원시 타입(기본 타입)이 맞다.
이렇게 뜨는 이유는 js 초기의 버그인데, 버그를 수정하게되면 이미 지금의 typeof 코드로 작성된 웹페이지가 고장날 수 있기 때문이다.
console.log(typeof nullVar) // object
console.log(nullVar === null); // true면 null 타입
-> 참고 : null의 타입이 객체로 뜨는 이유