[study] 언제까지 넘겨 짚을래 ch6. 데이터 타입

가오리·2023년 4월 15일
0

javascript

목록 보기
3/44
post-thumbnail
📌 스터디 교재 및 강의
  1. [youtube] 모던 자바스크립트 Deep Dive 스터디
  2. [e-book] 모던 자바스크립트 Deep Dive
  3. [e-book] 코어 자바스크립트
  4. [blog] 자바스크립트 개발자라면 알아야 할 33가지 개념



⚓️ 데이터 타입의 구분

기본형은 담긴 주소 값을 바로 복제하지만 참조형은 값이 담긴 주소 값들로 이루어진 묶음을 가리키는 주소 값을 복제하기 때문에 기본형과 참조형은 다르다.






✏️ 기본형(=원시형): Primitive type

  1. 숫자: Number

    자바스크립트는 모든 수를 실수로 처리하며 int, long, float, double 등 다양한 타입이 아닌 하나의 숫자 타입만 존재한다. 그렇기 때문에 수가 정수로 표시된다고 해도 사실은 실수이기에 정수로 표시되는 수끼리 나누더라도 실수가 나올 수 있다.

    2진수, 8진수, 16진수 등을 참조하면 10진수로 해석되고 추가적으로 Infinity(양의 무한대), -Infinity(음의 무한대), NaN(Not a Number)값도 표현할 수 있다.

  2. 문자열: String

    문자열은 ‘’, “”, ````으로 텍스트를 감싸며 만약 감싸지 않으면 자바스크립트 엔진은 키워드나 식별자 같은 토큰으로 인식한다.

  3. 불리언: Boolean

    불리언 타입은 논리적인 참과 거짓을 나타내는 true, false이다.

  4. undefined & null

    개발자가 의도적으로 할당하기 위한 값이 아닌 자바스크립트 엔진이 변수를 초기화 할 때 사용하는 값이 undefined이다. 변수에 값이 없다는 것을 의도적으로 명시할 때는 undefined를 할당하는 것이 아니라 null을 할당해야 한다.

    null을 할당하는 것은 변수가 이전에 참조하던 값을 더 이상 참조하지 않겠다는 의미이지만 유용해 보이지는 않는다.

    데이터 영역의 메모리 주소를 지정하지 않은 식별자에 접근할 때, 객체 내부의 존재하지 않는 프로퍼티에 접근하려고 할 대, return 문이 없거나 호출되지 않는 함수의 실행 결과를 나타내는 경우 undefined를 반환한다.

  5. 심벌: Symbol(ES6 ~)

    변경이 불가능한 원시 타입의 값이자 다른 값과 중복되지 않는 유일무이한 값이다.

    const id = Symbol('id')
    const animal = {};
    
    animal[id] = 'gaori';
    console.log(animal[id]); // gaori



✏️ 템플릿 리터럴

일반 문자열 내에서는 개행이 허용되지 않는다. 그렇기 때문에 줄바꿈(\n) 등의 공백을 표현하기 위해 이스케이프 시퀀스를 사용한다. 템플릿 리터럴 내에서는 이스케이프 시퀀스르 사용하지 않고도 줄바꿈이 허용되며 모든 공백이 있는 그대로 적용된다.

console.log("나는\t가오리");
console.log(`나는    가오리`);
// 나는    가오리

템플릿 리터럴 내에서는 표현식 삽입을 통해서 간단히 문자열을 삽입할 수 있다.

const name = "가오리";
console.log(`나는 ${name}`);
// 나는 가오리



✏️ 데이터 타입의 필요성

  1. 값을 저장할 때 낭비와 손실없이 저장하기 위해서
  2. 값을 참조할 때 한 번에 읽어들일 메모리 공간의 크기를 정하기 위해서
  3. 메모리에서 읽은 2진수를 어떻게 해석할지 결정하기 위해서





✏️ 동적 타이핑

정적 타입 언어(C, Java)는 변수 선언 시점에서 변수의 타입이 결정되고 이는 변경할 수 없다. 하지만 자바스크립트는 값을 할당하는 시점에 변수의 타입이 동적으로 결정되고 변수의 타입은 언제든지 변경될 수 있다.

쉽게 말하자면 자바스크립트의 변수는 선언이 아닌 할당에 의해서 타입이 결정되고 재할당에 의해 변수의 타입은 언제든 동적으로 변할 수 있다.

이런 특징을 동적 타이핑이라고 하며 정정 타입 언어와 구별하기 위해 동적 타입 언어라고 한다.

변수를 사용할 때 주의할 사항

  • 변수는 꼭 필요한 경우에 한해 제한적으로 사용한다.
  • 변수의 유효 범위를 최대한 좁게 만들어 변수의 부작용을 억제한다.
  • 전역 변수는 최대한 사용하지 않는다.
  • 변수보다는 상수를 사용해 값의 변경을 억제한다.
  • 변수 이름은 변수의 목적이나 의미를 파악할 수 있도록 네이밍한다.
profile
가오리의 코딩일기

0개의 댓글