Javascript: data & structural types (feat. typeof 연산자)

Minjae Kwon·2020년 10월 28일
1
post-thumbnail

🙋🏻‍♀️ 자바스크립트 primitive?

원시자료형(primitive) 으로 불리는 7가지의 데이터 타입이 있다. 2가지 특징이 있는데,

  • null 을 제외한 6가지는 typeof 연산자를 사용해서 구분할 수 있다.
  • 자료의 원본을 변경시킬 수 없다. (immutable)

string, number, boolean, undefined, symbol, bigInt, null

// 원시자료형 7가지
typeof 'light' // "string"
typeof 1 // "number"
typeof true // "boolean"
typeof undefined // "undefined"
typeof Symbol('hi') // "symbol"
typeof 3892034721n // "bigInt" 

typeof null // "object"

null과 undefined의 차이점은? 👉🏼 read more


💡 자료의 원본을 변경시킬 수 없다는 의미를 String type 예시를 통해 살펴보면,

let sayHello = "hello!"; 

sayHello.toUpperCase(); // "HELLO!"
sayHello; // "hello!"

let sayHelloLoud = sayHello.toUpperCase(); 
sayHelloLoud; // "HELLO!"

toUppercase 라는 메소드를 사용했을 때 새로운 값이 생성되는데, 이 값은 기존 변수(sayHello) 에 자동 할당되지 않는다. 따라서 이 값을 다시 사용하고 싶다면 새로운 변수 (sayHelloLoud) 에 할당하도록 한다.


🙋🏻‍♀️ 자바스크립트 non-primitive?

원시자료형이 아닌 (non-primitive), structural types 에는 두 가지가 있다. Object 와 Function.

const obj = { username: "captain Korea" }
const func = printName(object) {
  return object.username
}

typeof obj // "object"
typeof func // "function"

💡 typeof 를 사용할 때 주의할 점 - 원시자료형 6가지 외의 자료 형태는 정확하게 구분하지 못한다. 예를 들어, typeof 는 배열도 object, null 도 object 라고 읽는다. 다른 자료형태들은 반드시 별도의 메소드를 사용하여 구분할 것.
<typeof [1, 2, 3] // "object" 
typeof NaN // "number"


배열과 객체, NaN을 구분하는 메소드들은 뭐가 있을까? 👉🏼 read more

profile
Front-end Developer. 자바스크립트 파헤치기에 주력하고 있습니다 🌴

0개의 댓글