1) number : infinity, NaN 도 number type임!
2) string
3) boolean
4) undefined : 변수를 선언하고 초기화하지 않았을 때 나옴. ex) let number;
5) null
: 변수에 값이 없다는 것을 의도적으로 명시할 때 사용.
: ex) let number = null;
6) symbol
1) object
2) array
3) function 등
(참고 사이트 : https://learnjs.vlpt.us/useful/02-truthy-and-falsy.html)
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));
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 []
→ "object"
: prototype chain 으로 인한 "자바스크립트의 모든 것은 객체다"라는 원리 때문에,
배열은 확장된 객체인 것임!
typeof null
→ "object"
: null은 빈 객체를 참조하고 있어서 그렇습니다.
: 이건 자바스크립트 초기 버전의 버그다. ????? 진짜?????