본문 바로가기
JavaScript

JavaScript - Primitive Value & Casting

by 새발개발JA 2023. 10. 31.
반응형

 
 
오늘은 자바스크립트 기초를 정리해보았다. 내가 정리한 챕터는 Primitive Value & Casting 이다.
 

Primitive Value 이란

Primitive value (원시값)은 말 그대로 원초적인 단순 값이다
→ 객체 x / 메소드 x / 속성 x 을 가지지 않는 데이터
→ 원시값 자체는 불변이다. 변수가 변할 뿐!
 
원시 타입에는 각각의 객체마다 내장함수들이 있다 ex) toLocaleString(), toFixed() 
(그래서 이 타입의 값들을 핸들링할 때, 이 함수들을 요긴하게 사용한다)
 
하지만 null / undefined아무것도 없 - 다
(그래서 undefined 값인 변수를 사용할 때 TypeError가 꽤나 발생하므로, 예외처리는 필수이다)

요런 에러 말일거다

 

Primitive Value  원시 값

총 7가지 타입이 있다. 하나씩 간략히 알아보자

object wrapper 어디서 많이보지 않았나? (hint: console.log)

null 과 undefined 는 값이 없을 때 주로 등장하는 녀석들이다
→ null 은 객체가 없음을 의미하고, undefined 는 값이 없을 때 나타난다
리스트 자료형에서 chaining의 끝에서 pointer가 마지막인 것을 나타낼 때 사용하기도 한다
 
boolean 은 (이분법적) 논리의 참 / 거짓의 두가지 값을 가지는데 이 친구는 조건문에서 많이 보인다
 
number 는 숫자형으로 값을 표현할 수 없을 때는 NaN 이라는 녀석이 있는데 숫자로 표현할 수 없는 연산결과를 나타낸다
"자기자신과 같지 않다" 라는 자바스크립트의 유일한 값
비트 마스킹의 데이터로도 사용될 수 있지만 권하지는 않는다고 한다. 너무 복잡하기 때문이다.
 
bigint 는 거대 정수를 다룰 때 사용되는 타입이다
 
string 은 텍스트 데이터를 표현한다
 
symbol은 고유하고 중복 x 값이라서 객체 프로퍼티에 대한 식별자로 사용된다.
모든 심볼 값은 고유하고 중복이 되지 않으며 한번 생성되면 그 값은 변경되지 않기 때문에 충돌 위험이 없는 타입이다.
 
 

Type Casting 타입변환

위에서 데이터를 표현하는 여러가지 타입들로 하나의 타입에서 → 다른 타입으로 변환하는 것을 타입 캐스팅이라고 한다.
타입 변환에는 암묵적 형변환명시적 형변환 두 가지 방법이 있다.
 
암묵적 형변환
자바 스크립트의 좋은 점은 런타임에 의해 자동으로 타입 캐스팅이 이뤄진다는 것이다
→ + 만 문자형 > 숫자형 보다 우선시 된다
- * / % 는 숫자형이 더 우선시 된다

+  는 문자형을 포함하는 경우 결과값이 문자열로 변환되고, 나머지 연산자는 숫자형이 우선시 된다

명시적 형변환
타입을 변경하기 위해  Object(), Number(), toString(), Boolean() 와 같은 함수를 사용한다

 
 

Truthy & Falsy 

 
요 개념은 나에게 있어 약간 애매했다. 참같은 값이고 거짓같은 값이다라고만 설명이 되어있는데
값들을 boolean 으로 사용할 때 적용되는 개념인 듯하다.
 
 
 
Falsy 
 
undefined 와 null, 0, '', NaN 요 다섯 녀석들은 Falsy 한 값이다.
boolean 으로 사용할 때, 기본값이 false 이다. 그래서 !(느낌표)를  붙여주면 반대 값인 true 가 된다

 
 
Truthy 
 
위의 다섯가지 값을 제외한 나머지는 몽땅 다 Truthy 이다

 
 
Truthy & Falsy 는 함수 안에서 예외처리를 해줄 때 이 개념은 유용하게 사용된다.
두 함수를 비교해보자 (Falsy 의 개념을 이해하고 응용하면 얼마나 편한지 보자)
 

function getName (name) {
	if(name === undefined || name === null || name === ''){ // 줄줄이 달린 사탕같은 그들
    	return;
    }
    
    ..... 함수내용
}

 

function getName (name) {
	if(!name){ // 간단하게 !를 사용
    	return;
    }
    
    ..... 함수내용
}

 
 
 
 
 

반응형

댓글