Modern JavaScript Deep Dive 6장

younghyun·2022년 5월 10일
0

데이터 타입

값의 종류. 자바스크립트는 7개 데이터 타입 제공.
목적 다름. 숫자 타입 값은 산술 연산을 위해 생성, 문자열 타입은 텍스트를 화면에 출력하기 위해 사용.

필요 이유
값 저장 시 확보해야 하는 메모리 공간 크기 결정
값 참조 시 한 번에 읽어들여야 할 메모리 공간 크기 결정
메모리에서 읽어 들인 2진수 해석 방법 결정

  • 원시 타입 (변경 불가)

숫자 타입 : 모든 수가 실수. 정수, 실수, 2진수, 8진수, 16진수 리터럴 모두 배정밀도 64비트 부동소수점 형식 2진수로 메모리에 저장됨.
값을 참조시 모두 10진수로 해석됨. 정수로 표시되는 수끼리 나눠도 실수가 나올 수 있음.

Infinity : 양의 무한대
-Infinity : 음의 무한대
NaN(값이 아닌 식별자): 산술 연산 불가

var binary = 0b01000001; // 2진수
var octal = 0o101; // 8진수
var hex = 0 * 41; // 16진수

// 표기법만 다를 뿐 모두 같은 값
console.log(binary); // 65
console.log(octal); // 65
console.log(hex); // 65
console.log(binary === octal); // true
console.log(octal === hex); // true

console.log(1 === 1.0); // true
console.log(4 / 2); // 2
console.log(3 / 2); // 1.5

문자열 타입 : 0개 이상 16비트 유니코드 문자(UTF-16)집합으로 전 세계 대부분 문자를 표현할 수 있음.
작은 따옴표, 큰 따옴표, 백틱으로 텍스트 감쌈. 따옴표로 감싸지 않으면 키워드나 식별자와 같은 토큰으로 인식함. 스페이스와 공백 문자도 포함 안됨.
개행 허용 되지 않음. 일반 문자열에서 공백(줄바꿈 등)을 표현하려면
백슬래시로 시작되는 escape sequence를 사용해야 함.

\0 : Null
\b : 백스페이스
\f : 폼피드 : 프린터로 출력 시 다음 페이지 시작점으로 이동
\n : 개행. 다음 행으로 이동
\r : 개행. 커서를 처음으로 이동
\t : 탭(수평)
\v : 탭(수직)
\uXXXX : 유니코드
\' : 작은 따옴표
\" : 큰 따옴표
\\ : 백슬래시

템플릿 리터럴 (백틱) : multi-line String, expression interpolation, tagged template 등 편리한 문자열 처리 기능 제공.

var first = 'Ung-mo';
var last = 'Lee';

console.log('My name is ' + first + ' ' + last + '.');
console.log(`My name is ${fist} ${last}.`);
// 템플릿 리터럴 내에서 표현식 삽입시 ${}으로 감쌈. 평가 결과가 문자열이 아니어도 문자열로 type이 강제로 변환되어 삽입됨.

불리언 타입

undefined 타입 : var 키워드로 선언된 변수에 암묵적으로 할당되는 값

null 타입 : 값이 없다는 것을 의도적으로 명시할 때 사용되는 값 (자바스크립트 엔진이 변수 초기화시 사용하는 undefined를 의도적으로 변수에 할당하면 본래 취지와 어긋나고 혼란을 줄 수 있음.)
이전에 참조하던 값 더 이상 참조하지 않음 의미. 자바스크립트 엔진은 누구도 참조하지 않는 메모리 공간에 대해 가비지 콜렉션 수행함.
함수가 유효한 값을 반환할 수 없는 경우 명시적으로 null을 반환.

심벌 타입 : ES6에서 추가된 7번째 타입. 외부에 노출되지 않고 변경 불가능한 값. 객체의 유일한 프로퍼티 키를 만들기 위해 사용함. 심벌 이외 원시값은 리터럴로 생성함. 심벌은 symbol함수를 호출해 생성함.

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

  • 동적 타이핑
    자바스크립트 변수는 선언이 아닌 할당에 의해 타입이 결정. 재할당에 의해 언제든지 동적으로 변함.

  • 변수 사용시 주의할 점
    꼭 필요한 경우 한해 제한적 사용. 변수 개수가 많을 수록 오류 발생 확률도 높아짐. 필요한 만큼 최소한으로 유지

    변수 유효 범위는 최대한 좁게 만들어 부작용 억제

    전역 변수 최대한 사용하지 않도록 함. 복잡성 증가, 처리 흐름 추적하기 어렵게 함.

    변수 보다는 상수(const) 사용해 값의 변경 억제

    변수 목적이나 의미를 파악할 수 있도록 네이밍. 코드 이해하기 쉽게 만들고 협업, 생산성 향상에 도움을 줌.

profile
선명한 기억보다 흐릿한 메모

0개의 댓글