데이터 타입과 변수의 동적 타이핑
- 정적 타입 언어
- 변수에 타입이 있는 언어
- 그 변수의 타입과 일치하는 데이터만 저장 가능
- C, Java
- 동적 타입 언어
- 변수에 저장된 데이터 타입을 동적으로 바꿀 수 있는 언어
- 같은 변수에 숫자나 문자열과 같은 다양한 타입의 데이터를 대입할 수 있음
- 자바스크립트
데이터 타입의 분류
- 원시 타입(Primitive type)
- 데이터를 구성하는 가장 기본적인 요소로 값을 바꿀 수 없는 데이터
- 숫자, 문자열, 논리값, undefined, null, symbol(ECMAScript 6에 추가된 값, 심벌)
- 객체 타입
- 원시 타입에 속하지 않는 자바스크립트의 값
- 변수 여러 개가 모여서 만들어진 복합 데이터 타입
- 객체 안에 저장된 값은 변경 가능
- 참조 타입, 객체 타입의 값을 변수에 대입하면 변수에는 그 객체에 대한 참조(메모리에서의 위치 정보)가 할당됨
- 자바스크립트의 배열, 함수, 정규 표현식 등
숫자
- 리터럴: 프로그램에 직접 작성할 수 있는 상수 값
- 정수 리터럴
- 부동소수점 리터럴
- NaN: 0을 0으로 나눈 값, Infinity를 Infinit로 나눈 값,음수의 제곱근 등 숫자로 표현할 수 없는 부정 값
문자열
- 이스케이프 시퀀스: 역슬래시(\) 뒤에 특정 문자를 뜻하는 기호를 표기한 형태
- ex) ‘I \’m going to learn Javascript.’
- 써로게이트 페어: UTF-16 유니코드로 표현할 수 있는 범위를 넘어서는 문자들
- 이모티콘, 자주 사용되지 않는 한자 등
논리값
- true, false
- 논리값을 주로 제어 구문에 사용: if/else문, while문, do/while문, for문
특수한 값
- undefined, null: 값이 없음
- undefined: 정의되지 않은 상태
- 값을 아직 할당하지 않은 변수의 값
- 없는 객체의 프로퍼티를 읽으려고 시도했을 때의 값
- 없는 배열의 요소를 읽으려고 시도했을 때의 값
- 아무것도 반환하지 않는 함수가 반환하는 값
- 함수를 호출했을 때 전달받지 못한 인수의 값
- null: 아무것도 없음을 값으로 표현한 리터럴
- 주로 프로그램에서 무언가를 검색했지만 찾지 못했을 때 아무것도 없음을 전달하기 위한 값으로 사용
ECMAScript 6부터 추가된 데이터 타입
심벌(Symbol)
- 심벌은 이터레이터, instanceof 재정의, 메서드의 다양한 확장 방법 등을 이해하기 위한 필요한 기초 지식
- 자기 자신을 제외한 그 어떤 값과도 다른 유일무이한 값
- Symbol() 을 사용하여 생성
- 호출할 때마다 새로운 값을 만듦
var sym1 = Symbol();
var sym2 = Symbol();
console.log( sym1 == sym2 ); //false
- 호출할 때마다 새로운 값을 만듦
- Symbol()에 인수를 전달하면 생성된 심벌의 설명을 덧붙일 수 있음
var HEART = Symbol( “하트” );
console.log( HEART.toString() ); //Symbol(하트) - 심벌과 문자열 연결하기
- Symbol.for() 으로 문자열과 연결된 심벌을 생성할 수 있음
- var sym1 = Symbol.for( “club” );
- 전역 레지스트리에 심벌이 만들어짐
- 이 기능으로 코드의 어느 부분에서도 같은 심벌을 공유할 수 있음
- 심벌과 연결된 문자열은 Symbol.keyFor() 로 알 수 있음
var sym1 = Symbol.for( “club” );
var sym2 = Symbol( “club” );
console.log( Symbol.keyFor(sym1) ); //club
console.log( Symbol.keyFor(sym2) ); //undefined
템플릿 리터럴
- 복잡한 문자열 처리를 간결하게 표현 가능
- 역따옴표 사용 `
- 문자열 리터럴과는 달리 줄 바꿈 문자를 표현할 때 이스케이프 시퀀스(\n) 사용 안해도 됨
- 템플릿 리터럴을 사용하고 이스케이프 시퀀스 문자를 그대로 출력하려면 템플릿 리터럴 앞에 String.raw(태그함수) 를 붙인다
- var t = String.raw`beauty\nis beauty`;
- console.log(t); //beauty\nis beauty
- 보간 표현식
- 템플릿 리터럴 안에 플레이스 홀더 ${} 넣기
- 문자열 안에 변수나 표현식의 결과값을 삽입 가능
이 글은 모던 자바스크립트 입문(이소 히로시)을 참고하여 작성되었습니다.
'프로그래밍 언어 > JavaScript' 카테고리의 다른 글
[JavaScript] 변수/변수 명명 규칙/호이스팅(hoisting) (0) | 2022.12.22 |
---|---|
[JavaScript] 프로그램 작성법-유니코드/토큰/파싱/주석 (0) | 2022.12.08 |
[JavaScript] 순수 자바스크립트란? (0) | 2022.12.07 |
[JavaScript] 자바스크립트 실행 환경 (0) | 2022.12.07 |
[JavaScript] 클라이언트 측 자바스크립트 & 서버 측 자바스크립트 (0) | 2022.10.05 |