6장 테이터 타입

이재민·2023년 6월 23일

자바스크립트

목록 보기
3/23

원시타입 : number, string, boolean, undefined, null symbol

객체 타입 : 객체, 함수, 배열등

숫자 타입

하나의 숫자 타입 존재 (C, Java와 다름)

배정밀도 64비트 부동소수점 형식

Infinity : 양의 무한대

-Infinity : 음의 무한대

NaN : 산술 연산 불가 (not-a-number)

10/0 // Infinity : 양의 무한대
10/-0 // 음의 무한대
1*'String' // NaN 

문자열

let string;
string = '문자열';
string = "문자열";
string = `문자열`;
//자바스크립트의 문자열은 원시타입이며, 변경 불가능한 값

템플릿 리터널

`` (보통 문자열과 달리 백틱 사용)

일반 문자열 내에서는 개행 허용 x

일반 문자열 내에서 줄바꿈 공백표현 \ (이스케이프 시퀀스)사용 (\n, \r)

템플릿 리터널은 이스케이프 시퀀스가 없어도 개행 공백 그대로 적용

let first = 'jaemin';
let last = 'Lee';

console.log('My name is ' + first + ' ' + last + '.');
console.log(`My name is ${first} {last}.`);
console.log(`1 + 2 = ${1 + 2}`); // 1 + 2 = 3

불리언 타입

true, false

undefined 타입

undefined

let a
console.log(a) // undefined

null 타입

변수에 값이 없다는 것을 의도적으로 명시.

null을 할당하는 것은 변수가 이전에 참조하던 값을 더 이상

심벌 타입

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

let key = Symbol('key');
console.log(typeof key); // symbol

//객체 생성
let object = {};

// 이름이 충돌할 위험이 없는 유일무이한 값인 심벌을 프러퍼티 키로 사용.
obj[key] = 'value';
console.log(obj[key]); // value

객체 타입

자바스크립트를 이루고 있는 거의 모든 것이 객체

데이터 타입의 필요성

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

동적 타이핑

정적 타입 언어 : 변수를 선언할 때 변수에 할당할 수 없는 값의 종류, 즉 데이터 타입을 사전에 선언. (명시적 타입 선언) 컴파일 시점에 타입 체크

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

동적 타입 언어의 문제점

  • 프로그램에서는 변화하는 변수 값을 추적하기 어려움
  • 값을 확인하기 전에는 타입을 확신할 수 없음.
  • 개발자와 상관없이 자바스크립트 엔진에 의해 암묵적으로 타입이 자동으로 변환 -> 유연성 높지만 신뢰성 낮음

동적 타입 언어의 주의점

  • 변수는 꼭 필요한 경우 제한적 사용
  • 변수의 유효 범위는 최대한 좁게
  • 전역 변수 최대한 이용 x
  • 변수보다 상수를 사용
  • 변수의 이름을 변수의 목적이나 의미를 파악할 수 있게 네이밍

참고문헌 : 모던 자바스크립트 Deep Dive . 이웅모 지음

profile
안녕하세요

0개의 댓글