프로그래밍/Javascript
[JavaScript] ES6 자료형 정리 (1/2)
허니차
2020. 1. 2. 20:47
변수와 상수
- 변수: 이름이 붙은 값, 값은 언제든지 바뀔 수 있다.
let currentTempC=22; // 섭씨온도 선언+초기값 할당 currentTempC=22.5; // 값은 언제든지 변할 수 있다. let targetTempC; // let targetTempC=undefined; let targetTempC, room1 = "conrerence_room_a", room2="lobby";
- let은 변수 선언에만 쓰이고, 각 변수는 한 번만 선언할 수 있다.
- let문 하나에서 변수 여러 개를 선언할 수 있다.
- 초기값을 할당하지 않는다면 암시적으로 특별한 값
undefined
가 할당된다.
- 상수: ES6에서 새로 생긴 개념. 한번 할당한 값을 바꿀 수는 없다.
const ROOM_TEMP_C = 21.5, MAX_TEMP_C=30;
- 절대적인 규칙은 아니지만, 상수 이름에는 보통 대문자와 밑줄만 사용한다.
식별자 이름
- 변수와 상수,함수 이름을 식별자identifier라 부른다.
- 식별자는 반드시 글자나 달러 기호($), 밑줄(_)로 시작해야 한다.
- 식별자에는 글자와 숫자, 달러 기호, 밑줄만 쓸 수 있다.
- 유니코드 문자도 사용할 수 있다.
- 예약어는 식별자로 사용할 수 없다(ex. let이라는 이름의 변수를 생성할 수 없다.)
- 식별자는 대문자로 시작해서는 안 된다(클래스는 예외)
- 밑줄 한개 또는 두 개로 시작하는 식별자는 아주 특별한 상황, 또는 '내부'변수에서만 사용한다.
- 특별한 변수 카테고리를 만들지 않는 한, 변수나 상수 이름을 밑줄로 시작하지 않기
- 제이쿼리를 이용하는 경우, 달러 기호로 시작하는 식별자는 보통 제이쿼리 객체라는 의미이다.
- 가장 널리 쓰는 두 가지 식별자 표기법
- 카멜 케이스
- currentTempC, anIdentifierName
- 스네이크 케이스
- current_temp_c, an_identifier_name
- 카멜 케이스
리터럴
- 값을 만드는 방법
- 자바스크립트는 따옴표를 통해 리터럴과 식별자를 구별한다.
- 숫자에는 따옴표가 필요 없다.
let room1="conference_room_a"; // "conference_room_a"(따옴표 안)은 리터럴이다. let currentRoom = room1; let roomTemp = 21.5; // 숫자에는 따옴표가 필요하지 않다 currentRoom = conference_room_a; // error
원시 타입과 객체
- 자바스크립트의 값은 원시 값primitive 또는 객체object
- 원시 타입: 불변immutable
- 원시 타입의 종류
- 숫자
- 문자열
- 불리언
- null
- undefined
- 심볼symbol
- 불변성: 변수의 값이 바뀔 수 없다는 뜻은 아님
let str = "hello"; str = "world";
- 원시 타입의 종류
- 객체: 여러 가지 형태와 값을 가질 수 있다.
- 내장 객체 타입
- Array
- Date
- RegExp
- Map과 WeakMap
- Set과 WeakSet
- Number(원시 타입 숫자에 대응)
- String(원시 타입 문자열에 대응)
- Boolean(원시 타입 불리언에 대응)
- 내장 객체 타입
숫자
실제 숫자중에는 근사치로만 표현할 수 있는 숫자도 많다(ex. 원주율, 1/3...)
실제 숫자의 근사치를 저장할 때 IEEE-764 배정도 부동소수점 숫자 형식을 사용 -
double
double형식의 근사치 결과는 실제 값과 다른 경우도 있다.
자바스크립트에는 숫자형 데이터 타입이 하나뿐이다.
- 고성능 정수연산이나 정밀 소수점 연산이 필요한 어플리케이션에서는 자바스크립트를 사용할 수 없다
10진수,2진수,8진수,16진수 네 가지 숫자형 리터럴을 인식한다. 하지만 결국 숫자는 double 형식으로 저장된다.
10진수 리터럴
let count = 10; // 정수 const blue = 0x0000ff; // 16진수(==10진수 255) const umask = 0o0022; // 8진수 (== 10진수 18) const roomTemp = 21.5; // 실수 const c = 3.8e6; // 지수 const e = -1.6e-19; // 지수 const inf = Infinity; // 양의 무한대 const ninf = -Infinity; // 음의 무한대 const nan = NaN; // 숫자가 아님
Number 객체 프로퍼티
const small = Number.EPSILON; // 1과 더했을 때 1과 구분되는 결과를 만들 수 있는 가장 작은 값으로, 근사치는 2.2e-16이다. const bigInt = Number.MAX_SAFE_INTEGER; // 표현할 수 있는 가장 큰 정수 const max = Number.MAX_VALUE; // 표현할 수 있는 가장 큰 숫자 const minInt = Number.MIN_SAFE_INTEGER; // 표현할 수 있는 가장 작은 정수 const min = Number.MIN_VALUE; // 표현할 수 있는 가장 작은 숫자 const nInf = Number.NEGATIVE_INFINITY; // 음의 무한대 const nan = Number.NaN; // NaN const inf= Number.POSITIVE_INFINITY; // 양의 무한대
문자열
- 자바스크립트 문자열: 유니코드 텍스트
- 자바스크립트 문자열 리터럴은 작은 따옴표
'
, 큰 따옴표"
, 백틱`을 사용한다- 백틱은 ES6에서 도입됨
- 이스케이프
- 문자열 안에 따옴표를 사용해야 하는 경우, 역슬래시를 따옴표 앞에 붙인다.
const dialog = "He looked up and said \"don't do that!\" to Max."
- 역슬래시는 자기 자신을 이스케이프 할 수 있다.
const s = "In JavaScript, use \\ as an escape character in strings."
심볼
- 유일한 토큰을 나타낸다.
- Symbol()생성자를 이용해 만든다.