1장. 타입

cansweep·2022년 8월 18일
1
post-thumbnail

You don't know JS 책을 읽고 정리한 글입니다.

타입

타입이란 자바스크립트 엔진, 개발자 모두에게 어떤 값을 다른 값과 분별할 수 있는, 고유한 내부 특성의 집합이다.

JS의 내장 타입

  • null
  • undefined
  • boolean
  • number
  • string
  • object
  • symbol
typeof undefined === "undefined" // true
typeof 43 === "number"  //true

null 이외의 내장 타입들은 typeof의 반환값과 1:1 매칭된다.

typeof null === "object" // true

하지만 null의 typeof 연산 결과는 null이 아니다.

null은 falsy한 원시 값이지만 타입은 object이다.
(++ falsy : boolean으로 강제변환 시 false가 되는 값, undefined, null 등)

typeof는 JS의 내장 타입 7가지만을 반환하는 것이 아니다.

typeof funtion sum(){...} ==="function" // true

이처럼 함수의 값을 확인하고자 하면 "function"이라는 문자열을 반환한다.
함수는 object의 하위타입에 속하며 더 구체적으로 말하자면 호출가능한 객체이다.

객체이기 때문에 함수는 property를 가질 수 있다.

function sum(a, b) {
  return a + b;
}

console.log(sum.length); // 2

이처럼 function.length는 해당 함수의 인자 개수이다.

값은 타입을 가진다

값에는 타입이 있지만 변수에는 따로 타입이 없다.
자바스크립트는 타입 강제를 하지 않으며 변수 값이 쭉 하나의 타입만 가질 필요가 없다.

자바스크립트에서 undefined와 undelcared는 다른 개념이다.

  • undefined : 접근 가능한 스코프에 변수가 선언되었으나 현재 아무런 값도 할당되지 않은 상태
  • undelcared : 접근 가능한 스코프에 변수 자체가 선언되지 않은 상태

하지만 typeof 연산 결과는 동일하다.

let a;

console.log(typeof a); // "undefined"
console.log(typeof b); // "undefined"
profile
하고 싶은 건 다 해보자! 를 달고 사는 프론트엔드 개발자입니다.

0개의 댓글