javascript의 데이터에는 두 가지 타입이 존재한다.
1. 기본 타입(원시 타입 Primitive data type)
- 객체가 아니면서 method를 가지지 않음
- 데이터를 담고 있음
- 변경이 불가능한 데이터 타입(immutable data types)
- string, number, bigint, boolean, undefined, symbol
2. 참조 타입(객체 타입 Reference data type)
- 기본 타입이 아닌 모든 것은 객체(object)
- 기본 타입의 집합
- 동적으로 크기가 변하는 데이터를 보관하기 위해 변수가 아닌 다른 곳에 데이터를 저장하고 변수에는 그 주소만 할당됨
- 변경이 가능한 데이터 타입(mutable data types)
- 객체(object), 배열(array), 함수(fuction)
먼저 기본 타입에 대해 알아보자.
① String(문자열)
string은 문자열을 나타내는 타입이다.
세 가지로 표현이 가능하다.
let a = 'hi';
let b = "hi";
let c = `hi! my name is ${name}.`;
마지막 방식인 backtick을 사용하면 굳이 변수명을 문자열과 구분하여 + 로 이어주지 않더라도 출력하고자 하는 그대로 출력이 가능하다.
② Number(숫자)
다양한 숫자 타입이 존재하는 C언어와는 다르게 javascirpt에서는 하나의 숫자 타입만 존재한다.
모든 숫자를 64비트 부동 소수점 형태로 저장하여 정수나 실수의 구분 없이 바로 변수에 값을 대입할 수 있다.
const a = 1 / 0;
const b = -1 / 0;
const c = 'hi' / 7;
console.log(a);
// infinity
console.log(b);
// -infinity
console.log(c);
// NaN
숫자를 0으로 나누게 되면 양,음에 따라 무한대를 뜻하는 infinity와 -infinity로 출력되고
숫자가 아닌 값을 숫자로 나누게 되면 숫자가 아니라는 뜻의 NaN(Not a Number)이 출력된다.
parseInt('3.14'): 문자열을 정수로 변경
// 3
parseFloat(3.14): 문자열을 소수로 변경
// 3.14
소수 계산 시에는 10을 곱해서 정수로 만들어서 계산한 후 결과값을 10으로 다시 나눈다.
③ Boolean(불리언)
boolean은 true와 false를 나타내는 타입이다.
조건을 나타낼 때 아주 많이 쓰인다.
false: 빈문자열, 0, -0, null, undefined, NaN
true: -1, 'string'
let a = true;
// true
let b = false;
// false
④ Undefined, Null
undefined는 값이 할당되지 않아 데이터 타입을 알 수 없는 경우
null은 빈 값이 지정된 경우
null 값의 typeof 결과는 object가 출력되므로 null 값 체크가 필요할 땐 일치 연산자(===)를 사용해야 한다.
let a;
console.log(a);
// undefined
let b = null;
console.log(b);
// null
⑤ Symbol(심벌)
ES6부터 새로 생긴 데이터 타입이며, 고유한 식별자가 필요할 때 사용한다.
같은 값을 이용하여 변수를 생성해도 다른 값의 symbol이 생성된다.
const a = symbol('hi');
const b = symbol('hi');
console.log(a === b);
// false
만약 같은 값을 가지는 symbol을 만들고 싶으면 아래처럼 하면 된다.
const a = symbol.for('hi');
const b = symbol.for('hi');
console.log(a === b);
// true
출력 시에는. description을 이용하여 문자열로 변환한 뒤 출력해주어야 한다.
console.log(`type is ${a.description}`);
기본 타입은 여기까지.
이제 참조 타입에 대해 알아보자.
① Object(객체)
object 데이터 타입은 기본 타입을 제외한 모든 것이 해당되고, 한 두가지 이상의 값이 묶여있는 것을 의미한다.
여러 개의 프로퍼티를 저장할 수 있고, 메소드를 만들어 사용할 수 있다.
const person = {
name: ['Bob', 'Smith'],
age: 32,
gender: 'male',
interests: ['music', 'skiing'],
// 프로퍼티(속성)
bio: function() {
alert(this.name[0] + ' ' + this.name[1] + ' is ' + this.age + ' years old. He likes ' + this.interests[0] + ' and ' + this.interests[1] + '.');
},
greeting: function() {
alert('Hi! I\'m ' + this.name[0] + '.');
}
// 메소드(함수)
};
'js' 카테고리의 다른 글
[javascript] 연산자 정리, 조건문(if, switch), 반복문(while,for) (0) | 2022.08.18 |
---|---|
[javascript] 증감 연산자, 할당 연산자, 비교 연산자 (0) | 2022.05.24 |
[javascript] async와 defer 그리고 'use strict' (0) | 2022.05.14 |
[javascript] 변수 선언(var, let, const), 지역 변수(local variable), 전역 변수(global variable), 호이스팅 (0) | 2022.05.13 |
[j-query] FAQ, Q&A 아코디언 활용해서 만들기 (slideToggle, accordion) (0) | 2022.01.14 |