1장에서 자바스크립트는 number, string, boolean, null, undefined 이외의 모든 것들은 객체라고 했었다.
자바스크립트의 데이터 타입 종류도 이에 맞게 구분된다.
- 기본타입
객체가 아닌 number, string boolean, null, undefined 는 '기본타입' 으로서 그 자체가 하나의 '값'을 나타낸다는 특징이 있다.
자바스크립트의 'typeof' 연산자를 이용해 각 데이터 별 기본타입을 확인할 수 있다. (함수가 아니라 연산자이므로 사용법에 주의)
각 타입별로 알아두면 좋은 부분을 짚고 가보자.
-Number
자바스크립트의 모든 숫자형 데이터는 64비트 부동소수점 형태로 저장된다. (C의 double과 유사)
그래서 5/2 의 연산값이 c와 다르게 2가 아니라 2.5가 나오므로, 몫연산을 할 때는 Math.floor() 함수를 이용해 소수점을 버려야한다.
(=> 파이썬과 비슷해서 개인적으로 나는 오히려 익숙했다.)
- String
문자열은 ' ' 과 " " 두가지 모두를 이용해서 만들 수 있다. (역시 파이썬과 유사하다)
단, 자바스크립트에서 문자열이 그 자체로 하나의 '값'을 가지기 때문에 값을 바꿀 수 없는 점에 유의 해야한다.
사진에서 볼 수 있듯이, "hello" 라는 문자열을 저장하고, 해당 문자열의 첫번째 문자를 인덱스로 읽는 것은 가능했으나,
첫번째 문자를 인덱스로 쓰는 행위는 반영되지 않았다.
즉, 자바스크립트에서 한번 생성한 문자열은 읽기만 될 뿐 쓰기는 할 수 없다.
그리고 자바스크립트답게 분명 프로그래머 의도와 달리 변경이 되지 않았음에도 그 어떤 오류를 내지 않는다..
- Boolean
true, false 자체가 boolean 타입의 데이터값이다.
- null & undefined
null 과 undefined 모두 값이 없음을 의미한다.
정확히는 null 은 개발자가 명시적으로 의도해서 '값이 없다' 라는 의미의 값을 담은 것이고,
undefined 정말로 아무런 값이 없는 상태를 의미한다. 그래서 undefined는 타입이자 값이다.
undefined 타입의 변수는 어떤 변수든 모두 undefined 값을 갖는다.
그리고 한가지 더 주의해야할 부분은 null 타입 변수의 typeof 연산자 결과가 object 라는 점이다.
따라서 어떤 변수의 값이 null인지 아닌지 확인할 때는 typeof 연산자가 아닌 === 연산자를 이용하여 비교해야 한다.
(=> 그렇다면 왜 null 은 타입으로서 소개하는 건지가 의문이다. typeof 연산자의 출력값이 object라면 null도 객체아닌가)
- 참조 타입
기본타입이 아닌 종류의 모든 값은 객체로서 전부 참조 타입이다. ('객체타입' 이라고 하기도 한다.)
자바스크립트에서 함수, 배열 등도 모두 객체로서 참조 타입이다.
기본 타입은 단 하나의 값만을 가지지만, 참조타입은 'key : value' 형태의 여러 프로퍼티를 가질 수 있다.
각 프로퍼티의 값은 기본타입, 참조타입 모두 넣을 수 있다.
(=> 그래서 null 의 타입이 object 임에도 기본타입으로 분류된 것 같다. 단 하나의 null 이라는 값만 가지기 때문이다.)
위에 서술했던 내용을 종합해보면 객체는 참조타입인 함수 역시 프로퍼티로 가질 수 있다.
이 경우, 객체가 프로퍼티로서 가진 이 함수를 '메서드'라고 부른다.
'독서 > Inside Javascript' 카테고리의 다른 글
[Inside Javascript] 6. 기본타입과 표준메서드, 연산자 (0) | 2022.06.12 |
---|---|
[Inside Javascript] 5. 배열 (2) | 2022.05.09 |
[Inside Javascript] 4. 프로토타입 개념 (0) | 2022.04.06 |
[Inside Javascript] 3. 자바스크립트의 객체 (0) | 2022.03.26 |
[Inside Javascript] 1. 자바스크립트의 핵심 개념 (0) | 2022.03.21 |