자바스크립트 데이터타입 - 질문

Jihyun-Jeon·2022년 5월 26일
0

Javascript - Deep Dive

목록 보기
22/26

🔶 데이터 타입의 종류

1. primitive type(원시형)

1) number : infinity, NaN 도 number type임!
2) string
3) boolean
4) undefined : 변수를 선언하고 초기화하지 않았을 때 나옴. ex) let number;
5) null
: 변수에 값이 없다는 것을 의도적으로 명시할 때 사용.
: ex) let number = null;
6) symbol

2. reference type(참조형)

1) object
2) array
3) function 등

🔶Boolean형에 대해서

(참고 사이트 : https://learnjs.vlpt.us/useful/02-truthy-and-falsy.html)

  • Falsy value : false 값을 나타내는 값들
console.log(false); 
console.log(Boolean(0));   // 1. 숫자 0
console.log(Boolean(''));  // 2. 빈 공백인 문자열
console.log(Boolean(undefined)); 
console.log(Boolean(null));
console.log(Boolean(NaN));
  • Truthy value : true 값을 나타내는 값들
console.log(Boolean(1));   // 1. 숫자 0이외의 수
console.log(Boolean('x')); // 2. 공백이 아닌 문자열
console.log(Boolean([]));  // 3.배열은 빈 배열이여도 true임⭐️
console.log(Boolean({}));  // 3.객체은 빈 객체이여도 true임⭐️

🔶 배열의 타입이 객체인 이유

typeof [] → object
자바스크립트의 배열은 엄밀히 말해 일반적 의미의 배열이 아니다.
자바스크립트의 배열은 일반적인 배열의 동작을 흉내낸 특수한 “객체”이다.

  • 사실, 배열의 인덱스는 프로퍼티 키 이고, 배열의 요소는 프로퍼티 값이다.
    (참고 사이트 : https://poiemaweb.com/js-array-is-not-arrray)

  • prototype chain
    : prototype chain 으로 인한 "자바스크립트의 모든 것은 객체다"라는 원리 때문에,
    배열은 확장된 객체인 것임!

🔶 예상외로 typeof가 객체인 것들!(질문!!)

  1. typeof [] → "object"
    : prototype chain 으로 인한 "자바스크립트의 모든 것은 객체다"라는 원리 때문에,
    배열은 확장된 객체인 것임!

  2. typeof null → "object"
    : null은 빈 객체를 참조하고 있어서 그렇습니다.
    : 이건 자바스크립트 초기 버전의 버그다. ????? 진짜?????

0개의 댓글