[모던 자바스크립트 Deep Dive] 6장 데이터 타입

dayannne·2023년 3월 5일
0
post-custom-banner

데이터 타입(data type)(타입) : 값의 종류

[자바스크립트의 7가지 데이터 타입]

  • <원시 타입> : 변경 불가능한 값
      1. 숫자(number)
      1. 문자열(string)
      1. 불리언(boolean)
      1. undefined
      1. null
      1. 심벌(symbol)
    1. <객체 타입> : 변경 가능한 값

이 글에서는 원시 타입을 위주로 알아보고자 한다.


1. 숫자 타입

자바스크립트는 하나의 숫자 타입, number만 존재한다.

모든 수를 실수로 처리하며,
정수만 표현하기 위한 데이터 타입(c나 자바의 경우 int)이 별도로 존재하지 않는다.

이는 정수로 표시된다 해도 사실은 실수라는 것을 의미한다. 1 === 1.0
정수로 표시되는 수끼리 나누더라도 실수가 나올 수 있다.

숫자 타입은 추가적으로 세 가지 특별한 값도 표현할 수 있다.

  • Infinity ex) 10 / 0
  • -Infinity ex) 10 / -0
  • NaN : 산술 연산 불가(not-a-number) ex) 1 / 'String'

    💡 NaN을 NAN, Nan, nan으로 표현하면 값이 아닌 '식별자로 해석'하게 되어 에러가 발생한다.


2. 문자열 타입

텍스트 데이터, 자바스크립트에서 가장 일반적인 표기법으로 작은따옴표' '를 사용

2.1 템플릿 리터럴

ES6부터 도입된 새로운 문자열 표기법. 백틱(` `)을 사용해 표현하는 방식이다.

2.1.1 멀티라인 문자열

이스케이프 시퀀스(\n, \t...)를 사용하지 않고 여러줄의 문자열을 작성할 수 있다.

var template = `<ul>
	<li><a href="#">Home</a></li>
<ul>`;

2.1.2 표현식 삽입

var first = "dayxxxx"
var last = 'cha'
console.log(`My name is ${first} ${last}.`) // My name is dayxxx cha.
console.log(`1 + 2 = ${1 + 2}`) // 1 + 2 = 3

${}로 감싸 표현식을 삽입하며, 평가 결과가 문자열이 아니더라도 문자열로 타입이 강제로 변환되어 삽입된다.


4. 불리언 타입

true, false


5. undefined 타입

var 키워드로 선언한 변수일 때, 암묵적으로 undefined로 초기화 된다.

할당하기 위한 값이 아닌 자바스크립트 엔진이 변수를 초기화할 때 사용하는 값이므로
의도적으로 undefined를 할당하는 것은 권장하지 않는다.


6. null 타입

null은 변수에 '값이 없다'는 것을 의도적으로 명시할 때 사용한다.

변수가 이전에 참조하던 값을 더 이상 참조하지 않겠다는 의미로,
할당되어 있던 값에 대한 참조를 제거하게 되며, 자바스크립트 엔진이 가비지 콜렉션을 수행한다.

  • 함수가 유효한 값을 반환할 수 없는 경우 null을 반환하기도 한다.

7. 심벌 타입

다른 값과 중복되지 않는 유일무이한 값을 말한다.
ES6에서 추가된 7번째 타입으로, 원시 타입이다.
다른 원시 타입들은 리터럴을 통해 생성하지만 심벌은 Symbol 함수를 호출해 생성한다.


+) 동적 타이핑, 정적 타이핑, 선언과 정의

동적 타이핑

자바스크립트는 '동적타입 언어'이다.
자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정된다.
변수의 타입은 재할당을 통해 언제든지 동적으로 변할 수 있다.

정적 타이핑

변수를 선언할 때 변수에 할당할 수 있는 값의 데이터 타입을 사전에 선언해야 한다.
'정적타입 언어' - C, C++, 자바

선언과 정의

'C'에서의 선언과 정의

선언과 정의를 엄격하게 구분해 사용한다.

  • 선언 : 단순히 컴파일러에게 식별자의 존재만 알리는 것
  • 정의 : 실제로 메모리 주소를 할당하는 것

'자바스크립트'에서의 선언과 정의

선언하면 암묵적으로 정의가 이뤄지기 때문에 구분이 모호하지만,

  • 변수는 '선언'한다고 표현하고
  • 함수는 '정의'한다고 표현한다.

출처 : 이웅모, 『모던 자바스크립트 deep dive』, 위키북스(2020), p59-73.

profile
☁️
post-custom-banner

0개의 댓글