[JS Data-types(데이터 타입)] 원시 값(primitive value)

Chanki Hong·2022년 11월 7일
0

JavaScript

목록 보기
9/30
post-thumbnail

원시 값(primitive value)

  • 원시값은 단 하나의 값만 나타내며 불변.
  • 숫자 2는 항상 숫자 2.
  • 문자열 'hello'도 항상 문자열 'hello'
// 변수의 값이 바뀔 수 없다는 의미가 아님.
let str = 'hello'; // 불변값 'hello'로 할당.
str = 'world'; // 다시 불변값 '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 = '\\';

특수문자

  • \n: 줄바꿈.
  • \t: 탭.

문자열 병합

  • 변수나 상수 삽입하는 법.
let currentTemp = 10.4;
const message = '이곳의 온도는 ' + currentTemp + '입니다';

문자열 템플릿(template literal)

  • 변수나 상수 삽입하는 법.
  • 어떤 표현식이든 그 값을 문자열에 넣을 수 있음.
  • 문자열 템플릿(template literal) 또는 문자열 채우기(interpolation)
  • ` (백틱) 으로 감싼 문자열.
  • 문자열 템플릿에서는 $ (달러) 값이 특수문자로 활용.
  • $ (달러) 값 뒤에 {} (중괄호)로 변수나 상수를 감싸 이용.
let currentTemp = 10.4;
const message = `이곳의 온도는 ${currentTemp} 입니다`;

불리언(boolean)

  • truefalse 두 가지 값의 데이터 타입.
  • 또한 모든 값을 TruthyFalsy 로 구분 가능.

TruthyFalsy

  • Truthy 는 참 같은 값.
  • Falsy 는 거짓 같은 값.
// Not 연산자를 두번 이용하면 확인 하기 편함.
// falsy.
console.log(!!undefined);
console.log(!!null);
console.log(!!0); // 숫자 0.
console.log(!!''); // 빈 문자열.
console.log(!!NaN); // not a number.

// 위의 값을 제외하고는 truthy.
console.log(!!3); // 0을 제외한 숫자.
console.log(!!'hello'); // 문자열.
console.log(!!['array']);
console.log(!![]); // 빈 배열.
console.log(!!{}); // 빈 객체.
console.log(!!' '); // 공백이 있는 문자열.
console.log(!!'false'); // 문자열 false.
  • 이러한 특성을 이용하면 null checking 등에서 간결한 코딩 가능.
    • null checking: 값이 undefined 또는 null 인지 체크해 오류 방지.
// or 연산자를 이용한 null checking.
function print(person) {
  if (person === undefined || person === null) {
    return;
  }
  console.log(person.name);
}
// truthy와 falsy의 특성 이용.
function print(person) {
  if (!person) { // undefined 또는 null 값일 때 Not 연산자로 true 반환.
    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; // false

0개의 댓글