원시 값(primitive value)
- 원시값은 단 하나의 값만 나타내며 불변.
- 숫자 2는 항상 숫자 2.
- 문자열 'hello'도 항상 문자열 'hello'
let str = 'hello';
str = 'world';
숫자(number)
- 더블형식: JavaScript의 모든 수는 64비트 IEEE-754 부동소수점 형식.
- 10진법 입력 => 컴퓨터가 2진법 변환 => 컴퓨터가 연산 => 10진법으로 변환 => 출력
- 10진법에서는 분모의 소인수가 2와 5로 이루어진 분수만 유한소수로 표현 가능.
- 2진법에서는 분모가 2의 거듭제곱일때만 유한소수로 연산 가능.
- 이 때문에
0.1 + 0.2 = 0.30000000000000004
의 값이 나온다.
문자열(string)
'
(작은 따옴표), "
(큰 따옴표), `
(백틱, 그레이브)로 감싸서 사용.
- 유니코드(unicode) 텍스트 데이터.
이스케이프(escape)
- 문자열과 프로그램 자체를 구분하는 방법.
- 작은 따옴표와 큰 따옴표를 적절히 사용.
const dialog = 'Sam looked up, and said "hello, my friend!", as Max walked in.';
const imperative = "Don't do that!";
- 두가지 따옴표를 모두 써야 한다면
\
(역슬래시) 로 이스케이프.
\
(역슬래시)는 이스케이프 하고자 하는 것 앞에 위치.
const dialog1 = "He looked up and said \"Don't do that!\" to Max.";
const dialog2 = 'He looked up and said "Don\'t do that!" to Max.';
- 또한
\
(역슬래시)는 자기 자신을 이스케이프 할 수 있음.
const s = '\\';
특수문자
문자열 병합
let currentTemp = 10.4;
const message = '이곳의 온도는 ' + currentTemp + '입니다';
문자열 템플릿(template literal)
- 변수나 상수 삽입하는 법.
- 어떤 표현식이든 그 값을 문자열에 넣을 수 있음.
- 문자열 템플릿(template literal) 또는 문자열 채우기(interpolation)
`
(백틱) 으로 감싼 문자열.
- 문자열 템플릿에서는
$
(달러) 값이 특수문자로 활용.
$
(달러) 값 뒤에 {}
(중괄호)로 변수나 상수를 감싸 이용.
let currentTemp = 10.4;
const message = `이곳의 온도는 ${currentTemp} 입니다`;
불리언(boolean)
true
와 false
두 가지 값의 데이터 타입.
- 또한 모든 값을
Truthy
와 Falsy
로 구분 가능.
Truthy
과 Falsy
Truthy
는 참 같은 값.
Falsy
는 거짓 같은 값.
console.log(!!undefined);
console.log(!!null);
console.log(!!0);
console.log(!!'');
console.log(!!NaN);
console.log(!!3);
console.log(!!'hello');
console.log(!!['array']);
console.log(!![]);
console.log(!!{});
console.log(!!' ');
console.log(!!'false');
- 이러한 특성을 이용하면
null checking
등에서 간결한 코딩 가능.
null checking
: 값이 undefined 또는 null 인지 체크해 오류 방지.
function print(person) {
if (person === undefined || person === null) {
return;
}
console.log(person.name);
}
function print(person) {
if (!person) {
return;
}
console.log(person.name);
}
null과 undefined
null
- "값이 없음"을 할당하기 위해 사용하는 값.
- 자동으로 초기화되지 않음.
- 명시적으로 변수에 값이 없음을 할당 할때 undefined 보다 null 권장.
undefined
- 변수가 선언되었지만 값이 할당되지 않았을 때 자동으로 할당.(자동으로 초기화)
- 함수 내에서 매개변수가 전달되지 않았을 때 매개변수는 undefined.
- 객체 속성에 존재하지 않는 속성에 접근하면 값이 undefined.
- 배열의 비어있는 요소는 undefined로 초기화.
- "값이 정해지지 않음"을 의미.
- 의도적으로 값이 없음을 부여할 때는 사용을 권장하지 않음.
심볼(symbol)
- 유일한 토큰을 나타내기 위한 데이터 타입.
- 항상 유일하다는 면에서 객체와 유사.
- 이 점을 빼면 원시 값의 특징을 모두 가짐.
- 다른 식별자와 혼동해서는 안 되는 고유한 식별자가 필요할 때 사용.
Symbol();
생성자로 만듬.
const KOERA = Symbol('Korea is a peninsular region in East Asia.');
const ROK = Symbol('Korea is a peninsular region in East Asia.');
KOERA === ROK;