모든 프로그래밍 언어에는 내장된 자료구조가 존재한다.
자바스크립트 역시 그렇다.
기본적으로 자바스크립트는 느슨한 타입(loosely typed)의 동적 언어(dynamic)다.
변수는 어떤 특정 타입과 연결되지 않으며, 모든 타입의 값으로 할당 및 재 할당이 가능하다.
JavaScript의 타입
자바스크립트의 타입은 원시값* 과 객체로 나뉘어 진다.
(*원시값: 언어의 가장 낮은 단계에서 직접 표현되는 불변 데이터로 변경할수 없는 값을 말한다.)
여기에는 Boolean, Null, Undefined, Number, BigInt, String, Symbol이 속해있다.
객체: 컴퓨터 과학에의 객체란 식별자로 참조할 수 있는 메모리상의 값을 말한다.
객체 리터럴 구문을 사용해 제한적으로 속성을 초기화할 수의 있고, 그 후에 속성을 추가하거나 제거할 수도 있다.
속성 값으로는 다른 객체를 포함해 모든 타입을 사용할 수 있으므로 복잡한 자료구조의 구축이 가능하다.
속성은 '키' 값으로 식별하며, 키 값으로는 문자열 값이나 심볼을 사용할 수 있다.
Null과 Undefined의 차이
둘다 자바스크립트에서 '값이 없다'는 것을 나타낸다.
Undefined는 기본적으로 정의되지 않은 것, 존재하지 않는 배열의 원소값에 접근하려하면 나타나는 타입이다.
Null은 '값이 없다' ==' '비어있음'을 나타내는데 사용된다.
나는 undefinde와 null을 이렇게 이해했다
책상에 택배 상자가 올려져 있다고 가정하면,
Null: '저 택배 상자 누가 뜯었는데'
Undefined: '책상위에 있는건 뭐여??'
이 둘의 분명한 차이점은 undefined는 변수를 선언만 해도 할당되지만, null은 변수를 선언한 후에 null로 바꾼다는 점이다.
undefined가 변수만 선언해도 할당되는 이유는 '처음부터 등록되어 있지 않기 때문에' 값을 알수 없다이고,
null은 등록은 되어 있으나 비어있는(뭔지모르는) 값는 뜻이다.