[JavaScript] 자료형 (type)

Jun·2022년 4월 27일

JavaScript

목록 보기
2/13

학습 목표

  • 원시 자료형 string, number, boolean, undefined의 의미를 이해할 수 있다.
  • 타입마다 다른 속성과 메서드가 있다는 것을 이해할 수 있다.
  • typeof 연산자를 활용하여 특정 값의 타입을 확인할 수 있다.
  • 비교 시 엄밀한 비교( === 과 !== )의 필요성을 이해할 수 있다.

자료형(type)이란?

변수에는 형식이 있다. 이를 자료형이라고 한다.
JavaScript의 자료형은 원시 값(primitive type)과 객체(object)로 나뉜다.

원시 값 : 언어의 최고 로우레벨에서 직접 표현되는 불변 데이터

  • Boolean : 논리 요소를 나타내며 truefalse 두 가지의 값을 가질 수 있다.

  • Null : null 하나의 값만 가질 수 있다.

  • Undefined : 값을 할당하지 않은 변수는 undefined값을 가진다.

  • Number : -(2^53-1)부터 2^53-1까지의 수의 값을 가진다. 부동 소수점 숫자 외에도 +Infinity , -Infinity , Nan("Not a Number") 세 개의 상징적인 값을 가진다.

  • BigInt : 임의 정밀도로 정수를 나타낼 수 있는 JavaScript 숫자 원시 값이다. Number의 안전 한계를 넘어서는 큰 정수도 안전하게 저장하고 연산할 수 있다.

  • String : 텍스트 데이터를 나타낼 때 사용한다. 16비트 부호없는 정수 값 "요소"로 구성된 집합으로, 각각의 요소가 String의 한 자리를 차지한다.

  • Symbol : 고유하고 변경 불가능한 원시 값이며 객체의 속성 키로 사용할 수 있다.

객체 : 식별자로 참조할 수 있는 메모리 상의 값. 참조타입(Reference Type)이라고도 한다.

  • 속성의 컬렉션으로 볼 수 있다.

  • 객체 리터럴 구문을 사용하여 제한적으로 속성을 초기화할 수 있고, 그 후에 속성을 추가하거나 제거할 수도 있다.

  • 속성 값으로는 다른 객체를 포함해 모든 자료형을 사용할 수 있으므로 복잡한 자료구조의 구축이 가능하다.

  • 속성은 '키' 값으로 식별하며, 키 값으로는 문자열 값이나 심볼을 사용할 수 있다.

let myNameAge = {name: "Jun", age: 26}

typeof

type of 연산자는 피연산자의 평가 전 자료형을 나타내는 문자열을 반환한다.

console.log(typeof 100); // expected output: "number"
console.log(typeof "Hello"); // expected output: "string"
console.log(typeof true); // expected output: "boolean"
console.log(typeof undeclaredVariable) // expected output: "undefined"

동적 타입

JavaScript는 느슨한 타입(loosely typed)의 동적(dynamic) 언어이다.
변수는 어떤 특정 타입과 연결되지 않으며, 모든 타입의 값으로 할당 (및 재할당) 가능하다.

let foo = 42 // typeof foo = "number"
foo = 'bar' // typeof foo = "string"
foo = true // typeof foo = "boolean"

동치연산자

다른 언어에서는 동치연산자로 ==가 쓰이지만 JavaScript에선 ===를 쓴다.
== 를 쓰지 못하는것은 아니지만 차이점이 존재한다.

  • == 은 두 값이 같은 지 비교한다. 두 값을 공통(common) 형태로 변환한 후에 비교한다.

추상적(abstract) 같음 비교. 느슨한(loose) 같음이라고도 한다.

/* loose(abstract) equality */
console.log(1 == true); // output = true
console.log(0 == false); // output = true
console.log(1 == '1'); // output = true
console.log(null == undefined); // output = true
  • === 은 어느 값도 비교되기 전에 다른 값으로 변환되지 않는다. 그렇기에 자료형이 다르면 둘은 같지 않다고 여겨진다. 더 바람직한 비교 방법이다.

=== : 엄격한(strict) 같음 비교.

/* strict equality */
console.log(1 === true); // output = false
console.log(0 === false); // output = false
console.log(1 === '1'); // output = false
console.log(null === undefined); // output = false

참고 사이트 : https://dorey.github.io/JavaScript-Equality-Table/

profile
FrontEnd Engineer를 목표로 공부합니다.

0개의 댓글