본문 바로가기
JavaScript

자바스크립트의 타입

by 디디 ( DD ) 2023. 1. 24.

 

 

1. 동적 타입

  자바스크립트는 느슨한 타입의 동적 언어이다. 즉, 모든 타입의 값으로 (재)할당이 가능하다.

 

 

 

2. 자바스크립트의 타입

구분 데이터 타입 설명
원시 타입 숫자(number) 타입
- 정수와 실수 구분 없이 하나의 숫자 타입만 존재한다. (모두 실수로 처리)

- 추가적으로 Infinity: 양의 무한대 / -Infinity: 음의 무한대 / NaN: 산술 연산 불가(Not A Number) 라는 세 가지 특별한 값을 표현할 수 있다. 

문자열(string) 타입
- 작은따옴표(' '), 큰따옴표(" "), 백틱(` `)으로 텍스트를 감싸 표현한다. 

- 일반 문자열 내에서 줄바꿈 등의 공백을 표현하려면 백슬래시(\)로 시작하는 이스케이프 시퀀스를 사용해야 한다. ex. 줄바꿈 (\n)

cf. ES6에서 추가된 백틱(` `)을 사용하는 템플릿 리터럴 내에서는 이스케이프 시퀀스를 사용하지 않고도 줄바꿈을 표현할 수 있다.  

불리언(boolean) 타입
논리적 참(true)과 거짓(false)

undefined 타입
var 키워드로 선언된 변수에 암묵적으로 할당되는 값이다.

null 타입
값이 없다는 것을 의도적으로 명시할 때 사용하는 값이다.

심벌(symbol) 타입
- ES6에서 추가된 7번째 타입

- 다른 값과 중복되지 않는 유일무이한 값이다. 

객체 타입 객체, 함수, 배열 등
  • 원시 타입: 변경 불가능한 값. 원시 값을 할당한 변수는 원시 값 자체를 값으로 갖는다. 
  • 객체(참조) 타입: 변경 가능한 값. 객체를 할당한 변수는 생성된 객체가 저장된 메모리 공간의 주소를 값으로 갖는다. 

 

 

 

3. typeof 연산자

    : 연산자 뒤에 위치한 피연산자의 데이터 타입을 문자열로 반환한다. 

       → 7가지 ('number', 'string', 'boolean', 'undefined', 'symbol', 'object', 'function') 로 반환.

 

// 사용 예시

var foo;
console.log(typeof foo);  // 'undefined'

foo = 3;
console.log(typeof foo);  // 'number'

foo = 'Hello';
console.log(typeof foo);  // 'string'

foo = true;
console.log(typeof foo);  // 'boolean'

foo = null;
console.log(typeof foo);  // 'object'

foo = Symbol();
console.log(typeof foo);  // 'symbol'

foo = {};
console.log(typeof foo);  // 'object'

foo = [];
console.log(typeof foo)  // 'object'

foo = function() {};
console.log(typeof foo)  // 'function'

 

 

※ typeof 연산자로 null 값을 연산하면 "object"를 반환한다. 이것은 자바스크립트 첫 번째 버전의 버그인데, 기존 코드에 영향을 줄 수 있어 수정되지 못했다. 그러므로 null 값의 타입을 확인할 때는 일치 연산자(===)를 이용해야 한다. 

 

 

※ typeof 연산자로 배열 값을 연산했을 때 역시 "object"를 반환한다. 배열은 객체의 특수한 한 형태이기 때문이다. 그러므로 배열인지 판별하기 위해서는 isArray라는 배열 메서드를 이용해야 한다. 

 

// 구문

Array.isArray(obj);

// obj : 검사할 객체
// 반환값 -> true / false

// 사용 예시
Array.isArray([1, 2, 3]); // true
Array.isArray({ foo: 123 }); // false

 

 

 

 

 

[참고 자료 1] 모던 자바스트립트 Deep Dive <6장 데이터 타입>

 

[참고 자료 2] mdn 문서 (https://developer.mozilla.org/ko/docs/Web/JavaScript/Data_structures)

 

JavaScript의 타입과 자료구조 - JavaScript | MDN

모든 프로그래밍 언어에는 내장된 자료구조가 존재하지만 보통 그 내용은 언어마다 다릅니다. 이 글에서는 JavaScript에서 사용할 수 있는 내장 자료구조와 그 속성에 대해 알아보겠습니다. 그러

developer.mozilla.org

 

typeof (https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/typeof)

 

typeof - JavaScript | MDN

typeof 연산자는 피연산자의 평가 전 자료형을 나타내는 문자열을 반환합니다.

developer.mozilla.org

 

Array.isArray() (https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray)

 

Array.isArray() - JavaScript | MDN

Array.isArray() 메서드는 인자가 Array인지 판별합니다.

developer.mozilla.org

 

 

 

댓글