티스토리 뷰

2.5 Data types

여덝가지의 기본 데이터 타입이 존재한다. javascript는 어떤 한 변수에 어떤 타입의 값이든 넣을 수 있는데, 이를 "동적 타입"이라 한다. 

 

number

모든 정수, 부동 소수점 숫자를 나타낸다.

Infinity, -infinity, NaN 와 같은 특수 숫자 값도 존재한다. (infinity 는 무한대, NaN 는 계산상의 오류)

 

NaN의 경우 아래 케이스를 숙지해두자.

alert( NaN + 1 ); // NaN
alert( 3 * NaN ); // NaN
alert( "not a number" / 2 - 1 ); // NaN

0으로 나누거나 문자열을 숫자로 처리하는 등의 잘못된 연산을 수행하더라도 에러가 발생하는 것이 아니라, NaN 값이 나오기 때문에 비교적 안전하다.

Bigint (추후 BigInt 챕터에서 자세히 살펴보기로 하고 생략)

String

더블 쿼티, 싱글 쿼티, 백틱으로 문자열을 정의할 수 있다. 더블, 싱글 쿼티 간에는 차이가 없고, 백틱의 경우 변수나 표현식을 삽입할 수 있다.

let name = "John";

// embed a variable
alert( `Hello, ${name}!` ); // Hello, John!

// embed an expression
alert( `the result is ${1 + 2}` ); // the result is 3

javascript 에는 character 타입이랄게 없다. 오로지 string 이고 비어있거나 길이가 1인 문자열뿐이다.

boolean (별다를게 없었다. Java랑 비슷)

the "null" value 와 the "undefiined" value

null과 undefined 둘 다 값이지만, 다른 어떤 타입에도 속하지 않는 특별한 값들이다.

 

null은 java에서 처럼 null pointer 나 존재하지 않는 객체 참조와 같은 의미가 아니라, "아무것도 없음", "비어있음"을 의미하는 특별한 값이다. 

undefined는 변수는 선언되었지만, 할당되지 않은 경우 기본 초기값이 된다.

 

차이가 잘 와닿지는 않는데 개발자가 의도한 값이냐 아니냐 정도로 이해하면 될 것 같다.

Objects and Symbols (symbole 은 추후 자세히)

object 타입은 기본 타입 외에도 컬렉션이나 복잡한 엔터티를 담기 위한 타입이다. 

 

the typeof operator

typeof 연산을 통해 타입을 반환할 수 있다.

typeof undefined // "undefined"
typeof 0 // "number"
typeof 10n // "bigint"
typeof true // "boolean"
typeof "foo" // "string"
typeof Symbol("id") // "symbol"
typeof Math // "object"  (1)
typeof null // "object"  (2)
typeof alert // "function"  (3)

typeof null 의 경우 object로 나오는데 이는 javascript에서 공식적으로 인정된 오류이다. 또, alert의 경우 function 타입으로 나오는데 실제로 function 타입이 존재하는 것은 아니다. 

댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday