Javascript, 데이터 타입

[1] 데이터 타입과 변수의 동적 타이핑

데이터 타입 : 숫자나 문자열처럼 변수에 저장하는 데이터 종류

  • 동적 타입 언어(dynamic typed language) : 실행할 때 같은 변수에 숫자나 문자열 같은 다양한 타입의 데이터를 동적으로 바꿀 수 있는 언어. 자바스크립트는 동적 타입 언어이다.
  • 정적 타입 언어(static typed language) : C나 Java 등의 프로그래밍 언어에는 정수 타입 변수, 부동소수점 타입 변수 등이 있어 그 변수의 타입과 일치하는 데이터만 저장할 수 있다.
var pi = 3.14;
console.log(pi);    // → 3.14
pi = "원주율";
console.log(pi);    // → 원주율

자바스크립트는 동적 타입 언어이므로 프로그램을 실행할 때 발생하는 타입 변환에 주의하여 변수에 어떤 타입의 데이터가 저장되는지 잘 확인해야 함.

[2] 데이터 타입의 분류

원시 타입(primitive type) Vs 객체 타입

원시 타입

  • 숫자, 문자열, 논리값, 그 외 특수한 값(undefined, null), 심벌(symbol)
  • 원시 타입 데이터는 데이터를 구성하는 가장 기본적인 요소로 불변 값(값을 바꿀 수 없는 데이터)으로 정의.
  • 원시 타입의 값을 원시 값이라 함.

객체

  • 원시 타입에 속하지 않는 자바스크립트의 값.
  • 객체는 변수 여러 개가 모여서 만들어진 복합 데이터 타입.
  • 객체 안에 저장된 값은 바꿀 수 있으며 참조 타입.
  • 배열, 함수, 정규 표현식 등

[3] 숫자

  • 자바스크립트에는 정수 타입과 부동소수점 타입의 구분이 없다.
  • 숫자는 모두 64비트 부동소수점으로 표현. 이는 C나 Java의 double 타입에 해당
  • 배열 인덱스와 비트 연산은 32비트 정수로 처리

프로그램에 직접 작성할 수 있는 상수값은 리터럴(literal)이라 한다.

숫자를 표현하는 리터럴에는 정수 리터럴과 부동소수점 리터럴이 있다.

< 숫자리터럴 >

분류표기법예시설명비고
정수리터럴10진수123정수를 그대로 표현.
16진수0x2a숫자 앞에 0x를 붙임.
8진수0o73숫자 앞에 Oo를 붙임ES6
2진수0b101숫자앞에  0b를 붙임ES6
부동소수점 리터럴정수.소수3.14소수를 그대로 표현.
소수0.123정수부가 0일 때는 0을 생략할 수 있음..
가수부e지수부6.02e236.02×10^23.
가수부E지수부1.616199E-351.616199×10^-35.

자바스크립트에는 특별한 숫자를 표현하기 위한 문자열이 정의되어 있다.

ES5에서는 모두 읽기 전용이므로 수정할 수 없다.

< 특수한 값 >

분류표기법설명비고
전역변수Infinity플러스 무한대
전역변수NaN부정 값(Not a Number)
Number의 프로퍼티Number.POSITIVE_INFINITY플러스 무한대
Number의 프로퍼티Number.NEGATIVE_INFINITY마이너스 무한대
Number의 프로퍼티Number.MAX_VALUE표현할 수 있는 최대값
Number의 프로퍼티Number.MIN_VALUE표현할 수 있는 최소값
Number의 프로퍼티Number.NaN부정 값(Not a Number)
Number의 프로퍼티Number.EPSILON2.22044604925031e-16ES6
Number의 프로퍼티Number.MIN_SAFE_INTEGER-9007199254740900ES6
Number의 프로퍼티Number.MAX_SAFE_INTEGER9007199254740900ES6

NaN : 0을 0으로 나눈 결과값, Infinity를 infinit로 나눈 결과값, 음수의 제곱근 등 숫자로 표현할 수 없는 부정 값을 뜻함.

[4] 문자열

자바스크립트의 문자열은 길이가 16비트인 유니코드 문자(UTF-16)를 나열한 것으로 전 세계에서 사용하는 문자를 대부분 표현할 수 있다.

문자열 리터럴은 문자열 앞 뒤로 ‘ ‘ 나 ” “로 감싸 표현한다.

"Without haste, but without rest."
"서두르지 말라, 그러나 쉬지도 말라."
""    // 빈 문자열
'3.14'

(‘)이 표현에 필요하다면 “”로 감싸고, (“)이 표현에 필요하다면 ”로 감싼다.

"I'm going to learn Javascript."

자바스크립트를 HTML 요소에 끼워 넣을 때 자바스크립트 프로그램을 문자열로 작성한다.

<input type="button" value="Click" onclick="alert('Thanks!')">

이럴 때는 HTML 코드에는 큰 따옴표를 사용하고 자바스크립트 코드에는 작은 따옴표를 사용하여 HTML과 자바스크립트에서 사용하는 따옴표를 구분하는 것이 좋다.

이스케이프 시퀀스 : 역슬래시(\) 뒤에 특정 문자를 뜻하는 기호를 표기한 형태. 이를 이용해 특정 제어 코드나 문자를 표현할 수 있다.

'I\'m going to learn Javascript.'

< 이스케이프 시퀀스 목록 >

이스케이프 시퀀스의미비고
\0널(null) 문자
\b백스페이스 문자
\t수평 탭 문자
\n개행 문자
\v수직 탭 문자
\f다음 페이지 문자
\r캐리지 리턴 문자(CR)
\’작은따옴표 문자
\”큰따옴표 문자
\\역슬래시 문자
\xXX두 자릿수 16진수 XX로 지정된 Latin-1 문자
\uXXX네 자릿수 16진수 XXXX로 지정된 유니코드 문자
\u{XXXXXX}16진수 코드 포인트 XXXXXX로 지정된 유니코드 문자ES6

[5] 논리값

조건식이 참인지 거짓인지를 표현하기 위해 사용하는 값

true, false

x == 2

x 가 2라면 참(true), x가 2가 아니라면 거짓(false)

논리값은 제어구문(if/else 문, while 문, do/while 문, for 문)에 사용

[6] 특수한 값

값이 없음 : null, undefined

undefined – 정의되지 않는 상태

  • 값을 아직 할당하지 않은 변수의 값
  • 없는 객체의 프로퍼티를 읽으려고 시도했을 때의 값
  • 없는 배열의 요소를 읽으려고 시도했을 때의 값
  • 아무것도 반환하지 않는 함수가 반환하는 값
  • 함수를 호출했을 때 전달받지 못한 인수의

변수 값이 undefined가 되는 것은 값을 할당하지 않은 결과
코드로 undefined를 대입한 것이 아니라 자바스크립트 엔진이 변수를 undefined로 초기화한 것
자바스크립트 전역 변수에도 똑같은 이름의 undefined가 있고, 그 초기값은 undefined라는 원시값임.

null – 아무것도 없음

주로 프로그램에서 무것인가를 검색했지만 찾지 못했을 때 아무것도 없음을 전달하기 위한 값

< 참고문헌 >
🔹주 참고문헌 : 모던 자바스크립트 입문 – 이소 히로시 지음, 서재원 옮김
🔹MDN Web Docs

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다


error: 컨텐츠가 보호되고 있습니다.
위로 스크롤