Javascript의 자료형
동적타입
Javascript는 느슨한 타입의 동적 언어이다. 즉 변수는 어떤 특정 타입과 연결되지 않으며, 모든 타입의 값으로 할당이 가능하다.
let x = 42;
x = 'bar';
x = true;
원시타입 vs 객체타입
자바스크립트는 크게 원시타입과 객체타입으로 나뉜다.
- 원시타입
- Boolean, Null, Undefined, Number, BigInt, String, Symbol
- 객체타입 (속성의 컬렉션)
원시타입
객체를 제외한 모든 타입은 불변 값을 정의한다. (변경할 수 없는 값)
Boolean
- Boolean타입은 논리 요소를 나타내며 true, false 두 가지의 값을 가질 수 있다.
- 0, -0, null, false, NaN, undeifined, "" 이라면 객체의 초기값은 false이다.
- 위의 예시 이외의 값은 true로 설정한다.
- 값이 undefined, null이 아닌 모든 객체는 조건문에서 true로 계산된다.
- 이는 값이 false인 Boolean객체도 포함된다.
const x = new Boolean(false);
if (x) {
}
const x = false;
if (x) {
}
Null
- Null은 어떤 값이 의도적으로 비어있음을 표현한다.
- Boolean 연산에서는 false로 취급한다.
- 특정 경우에, null은 원시적이지 않다. 모든 객체는 null값으로부터 파생되며 따라서 typeof 연산자에서는 object를 반환한다.
typeof null === 'object'
Undefined
- 변수를 선언한 후 값을 할당하지 않은 변수 혹은 값이 주어지지 않는 인수에 자동으로 할당된다.
function test(x) {
let y;
console.log(x);
console.log(y);
}
test();
Number
- Number 타입은 -(2^53 - 1) ~ (2^53 - 1) 까지의 값을 가질 수 있다.
- 부동소수점 숫자 외에도 +Infinity, -Infinity, Nan("Not a Number") 값을 가질 수 있다.
- 0, -0으로도 표현 가능하며 +0 === -0 은 참이다.
> 42 / +0
Infinity
> 42 / -0
-Infinity
BigInt
- 임의 정밀도로 정수를 나타낼 수 있다.
- Number의 안전 한계를 넘어서는 큰 정수도 저장과 연산을 할 수 있다.
- BigInt는 정수 끝에 n을 추가하거나 생성자를 호출해 생성할 수 있다.
- BigInt는 Number와 혼합해 연산할 수 없으며, 이때 TypeError가 발생한다.
> const x = 2n ** 53n;
9007199254740992n
> const y = x + 1n;
9007199254740993n
String
- String은 문자열을 나타내는 타입이며 인덱스 0 ~ 시작하게된다.
- C언어와 달리 Javascript 문자열은 불변하다.
- 따라서 문자열 연산이 필요하다면 원본 문자열을 사용해 새로운 문자열을 생성해야한다.
Symbol
- 변경 불가능하며 다른 값과 중복되지 않는 고유한 값이다.
- 충돌 위험이 없는 오브젝트의 유일한 프로퍼티 키를 만들기 위해서 사용할 수 있다.
- 심볼 값은 외부로 노출되지 않아 확인할 수 없다. (고유 심볼 값)
- ECMAScript 2015 (ES6)에 추가되었다.
객체타입
- 다양한 데이터를 담을 수 있다.
- 키(key)와 값(value) 쌍으로 구성된 프로퍼티를 여러 개 넣을 수 있는데 키(key)에는 문자형이 들어가야하며 값(value)에는 모든 타입이 들어갈 수 있다.
let user = new Object();
let user = {};
예제
let user = {
name: "sion",
age: 42,
printInfo: function() {
console.log("제 이름은 : " + this.name + " 나이는 : " + this.age + "입니다." );
}
};
console.log(user.name);
console.log(user["name"]);
user.printInfo();
참고자료
mdn JavaScript docs
모던자바스크립트