모던 자바스크립트 Deep Dive 6장 정리 - 데이터 타입

Hyodduru ·2022년 5월 11일
1
post-thumbnail

6. 데이터 타입

🧐 데이터 타입 종류 크게 8가지?

  • 원시타입 - 숫자 타입, 문자열 타입, 불리언 타입, undefined 타입, null 타입, symbol 타입, bigInt
  • 객체 타입 - 객체, 함수, 배열 등

6.1 숫자 타입

🔖 숫자 타입은 모두 실수로 처리된다. 정수만 표현하기 위한 데이터 타입 별도로 존재하지 않음.

🧐 숫자 타입의 특별한 세가지 값?

Infinity(양의 무한대), -Infinity(음의 무한대), NaN
(산술 연산 불가 not-a-number)

6.2 문자열 타입

🔖 따옴표로 감싸지 않은 문자열형태는 식별자(변수)로 인식한다.

6.3 템플릿 리터럴

🔖 템플릿 리터럴은 런타임에 일반 문자열로 변환되어 처리된다.
🔖 일반 문자열 내에서 줄바꿈 등의 공백을 표현하려면 백슬래시()로 시작하는 이스케이프 시퀀스를 사용해야 한다.
🔖 템플릿 리터럴 내에서는 표현식 삽입을 통해 간단히 문자열을 삽입할 수 있다. 👉 ${}

6.4 불리언 타입

🔖 true, false

6.5 undefined 타입

🔖 var 키워드로 선언한 변수는 암묵적으로 undefined로 초기화된다.
🔖 undefined는 개발자가 의도적으로 할당하기 위한 값이 아니라 자바스크립트 엔진이 변수를 초기화할 때 사용하는 값.


🔖 정의? 변수에 값을 할당하여 변수의 실체를 명확히 하는 것
자바스크립트에서는 변수를 선언하면 암묵적으로 저으이가 이뤄지기 때문에 선언과 정의의 구분이 모호하다. ECMAScript 사양에서 변수는 '선언한다'라고 표현하고 함수는 '정의한다'라고 표현한다.

6.6 null 타입

🧐 null은 언제 사용하나?

변수에 값이 없다는 것을 의도적으로 명시할 때 사용. 변수에 null을 할당하는 것은 변수가 이전에 참조하던 값을 더 이상 참조하지 않겠다는 의미.

6.7 심벌 타입

🧐 심벌 타입이란?

ES6에서 추가된 7번째 타입으로 변경 불가능한 원시 타입의 값. Symbol 함수를 호출하여 생성, 생성된 심벌 값은 외부에 노출되지 않음.

6.8 객체 타입

🔖 자바스크립트는 객체 기반의 언어. 자바스크립트를 이루고 있는 거의 모든 것이 객체.

6.9 데이터 타입의 필요성

🧐 데이터 타입은 왜 필요한가?

👉 값을 저장할 때 확보해야하는 메모리 공간의 크기를 결정하기 위해
👉 값을 참조할 때 한 번에 읽어 들여야 할 메모리 공간의 크기를 결정하기 위해
👉 메모리에서 읽어 들인 2진수를 어떻게 해석할지 결정하기 위해

6.10 동적 타이핑

🔖 정적 타입언어? 변수를 선언할 때 변수에 할당할 수 있는 값의 종류, 즉 데이터 타입을 사전에 선언해야 한다. (명시적 타입 선언) 변수의 타입 변경할 수 없음, 변수에 선언한 타입에 맞는 값만 할당할 수 있음.
ex) C, C++, Java, Kotlin, Go, Haskell, Rust, Scala

🧐 동적 타이핑이란?

자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정(타입 추론)된다. 그리고 재할당에 의해 변수의 타입은 언제든지 동적으로 변할 수 있는 것.

🔖 동적 타입언어 종류? 자바스크립트, 파이썬, PHP, 루비, 리스프, 펄 등

🧐 동적 타입언어의 문제점?

👉 변수 값 언제든지 변경될 수 있기 때문에 복잡한 프로그램에서는 변화하는 변수 값을 추적하기 어려울 수 있음.
👉 값을 확인하기 전에는 타입을 확신할 수 없음.
👉 개발자의 의도와는 상관없이 자바스크립트 엔진에 의해 암묵적으로 타입이 자동으로 변환되기도 함(ex 숫자 타입의 변수라고 예측했으나 문자열 타입의 변수일 수도 있음)

🔖 변수 사용할 때 주의사항
1. 변수는 꼭 필요한 경우에 한해 제한적으로 사용하기
2. 변수의 스코프 최대한 좁게 만들기
3. 전역변수는 최대한 사용하지 않도록 하기
4. 변수보다는 상수를 사용해 값의 변경 억제하기
5. 변수 이름은 변수의 목적이나 의미를 파악할 수 있도록 네이밍하기.

추가 질문

🧐 자바스크립트에서 일어나는 데이터 형 변환이란?

데이터 형 변환에는 암시적 형변환과 명시적 형변환이 있음.
암시적 형변환이란 앞선 내용에서와 같이 자바스크립트 엔진에 의해 자동으로 데이터 타입이 변환되는 것을 말함.
즉, 개발자가 원하지 않았는데도 불구하고 강제로 형변환을 시킴.

ex) 숫자형 + 문자형 => 문자형
var a = 10 + '10'; // 1010 (문자열 타입)
불린형 + 문자형 => 문자형
var a = true + '10'; // true10 (문자열 타입)
불린형 + 숫자형 => 숫자형
var a = true + 10; // 11 (숫자형 타입)
출처: https://webclub.tistory.com/200 [Web Club]

profile
꾸준히 성장하기🦋 https://hyodduru.tistory.com/ 로 블로그 옮겼습니다

0개의 댓글