Javascript 의 타입
데이터 타입
이란 변수를 선언할 때, 숫자나 문자열 또는 이외의 것들을 변수에 저장하는 데이터 종류를 말한다.
- Javascript 언어의 타입은
원시값(기본 타입)
과 객체(참조 타입)
로 나뉜다.
원시타입(기본타입) : 값을 그대로 할당
- Boolean
- Null
- Undefined
- Number
- String
- Symbol
참조타입 : 값이 저장된 주소값을 할당
- Object
- Array
- Function
- RegExp(정규표현식)
- ES6 에는 map 등등..
🟡 원시값 타입(기본 타입)
- 객체를 제외한 모든 타입은 불변값을 정의한다.
예를들어 문자열은 불변하다. 이런 일련의 타입을 "원시값"이라고 한다.
- Boolean 타입
- 논리 요소를 나타내며
true
와 false
두가지 값을 가진다.
- 주로
if
같은 어떤 코드 부문이 실행되어야 할지 또는 어떤 코드 부문을 반복해야할지 결정하는데 사용된다.
true
는 1, false
는 0 의 값을 가진다.
- Null 타입
- 의도적으로 값이 없다는 것을 명시하기 위해 할당하는 값이다.
- 주로 의도적으로 비어있는 값을 넣을 때 사용한다.
- null 타입은
null
하나의 값만 가질 수 있다.
let a = 'lee';
a = null // 참조 정보 제거
- Undefined 타입
- 선언한 후 값이 초기화되지 않았거나 할당되지 않는 변수를 의미한다.
let a;
console.log(a) // 출력결과: Undefined
- Number 타입
- 다른 프로그래밍 언어들은 정수타입/ 실수타입을 구분하지만, 자바스크립트에서는 숫자를 모두
64비트 부동소수점 형식
으로 표현한다. (실수 하나로만 표현된다)
- 동적으로 변할 수 있으므로 변수에 할당된 값에 따라 변수의 타입이 결정된다.
- 모든 숫자는
+
,-
,*
,/
,%
를 할 수 있고
곱하기와 나누기가 더하기와 빼기보다 더 우산시된다.
- 또,
>
,<
부등호를 사용하여 크고 작음을 비교할 수 있다.
let a = 10; // 정수
let b = 10.2 // 실수
let c = -10 // 음의 정수
let d = 0b010100 // 2진수
let e = 0o101 // 8진수
let f = 0x41 // 16진수
- 추가적으로 3가지 특별한 값들도 표현할 수 있다.
Infinity
: 양의 무한대
-Infinity
: 음의 무한대
NaN
: 산술 연산불가(not-a-number)
- String 타입
- 문자열 값을 나타낸다. 작은 따옴표(') 나 큰 따옴표("), 리터럴(``)로 할당할 수 있다.
- 추가적으로, 문자열은 유사 배열 성격을 띈다.
그렇다고해서, 문자열을 변경할 수 있는 것은 아니다. 한번 생성된 문자열은 원시 성격, read only 로 변경 불가능하다.
그러나 재할당은 가능하다.
let str = 'string';
for ( let i = 0; i < str.length; i++) {
console.log(str[i]);
}
- Symbol 타입
- ES6 에서 추가되었다.
- 변경 불가능한 유일한 값을 생성할 때 사용된다(key 값).
값 자체의 확인이 불가하여 외부로 노출되지 않는다.
let sym = Symbol('key');
console.log(typeof sym) // 출력결과: Symbol
🟡 참조 타입(객체 타입)
- Object(객체) 타입
- 자바스크립트에서 기본 타입을 제외한 모든 값은 객체로 취급된다.
- 따라서 배열이나 함수 등도 모두 객체로 표현된다.
- 주로
이름(key):값(value)
한 쌍의 데이터를 저장하며, 여러개의 프로퍼티를 저장할 수 있다.
- 이런 객체의 프로퍼티는 기본 데이터 타입의 값을 가지거나 다른 객체를 가리킬 수 있다.
- 함수도 객체의 프로퍼티로 지정할 수 있고, 자바스크립트에서는 이런 프로퍼티를 메서드라고 부른다.
let obj = {
name: "leesu",
age: 100,
func: function () {
return this.name + "," this.age;
}
}
console.log(obj.name, obj.age) // 출력결과 leesu 100
console.log(obj.func()) // 출력결과 lee,100
🟢 동적 타이핑
- 자바스크립트는 동적 언어이다. 따라 변수의 타입이 지정되는 것이 아니라 값이 할당되는 과정에서 값의 타입에 의해 자동으로 타입이 결정된다는 뜻이다.
var a;
a = null;
console.log(typeof a); // null
a = 3;
console.log(typeof a); // number
a = "hi";
console.log(typeof a); // string
참고자료_1
참고자료_2
참고자료_3