본문 바로가기
공부 정리/웹(Web)

JS Primitive type checking

by 경적필패. 2022. 3. 10.
반응형

공부 동기?

if (typeof "1" === String) {
  console.log("'1' === String");
} else {
  console.log("'1' !== String");
}

해당 코드를 보고 true가 나올 것이라 생각했는데, false가 나왔기 때문입니다.

 

 

 

내용

"1"의 타입은 string이니까 당연히 String과 비교하면 참이라고 생각하였지만,

console.log(typeof "1"); //string
console.log(typeof String); //function

위 코드를 작성해보니 "1"은 원시 타입 string이고, String은 function이었습니다.

String()은 String 객체를 만들어주는 함수이니 당연한 결과였습니다.

 

 

primitive string Vs object string

보통 new 키워드를 붙여서 생성하면 object String이고 그렇지 않다면 primitive String입니다.

primitive string을 쓸 경우, 문자열의 메서드나 프로퍼티(str.length)를 못쓰는 게 정상이지만, primitive string에서 메서드 호출이나, 프로퍼티를 사용할 경우 자바스크립트 내부에서 primitive string을 자동적으로 wrap 시켜서 object string으로 바꿔준다고 합니다.

 

 

 

=> 그래서 원시 타입 체킹은 어떻게?

const num = new Number(5);
const array1 = ["aa", "b", num, 1, 3, true];

const arr = array1.filter((el) => {
  return el !== Object(el);
});
console.log(arr);

//[ 'aa', 'b', 1, 3, true ]

Object(value)를 이용하면 해당 값이 원시 타입인지, object인지 알 수 있습니다.

Object(num) => Number(5) ==>> Number(5) == Number(5)

Object("aa") => String("aa"); ==>> aa!== String("aa")

 

Object() 안에 값을 넣고 원래 값과 같으면 그건 객체, 다르다면 primitive타입!

반응형

'공부 정리 > 웹(Web)' 카테고리의 다른 글

JS preventDefault();  (0) 2022.03.16
JS .js 와 .mjs  (0) 2022.03.13
JS IIFE  (0) 2022.03.08
JS Arrays.prototype 의 의미  (0) 2022.02.23
JS Falsy값과 null병합 연산자  (0) 2022.02.17

댓글