“ 당신이 6개월 이상 한 번도 보지 않은 코드는 다른 사람이 다시 만드는 게 훨씬 더 나을 수 있다. ”
자료형(data type)
자료형(data type)이란?
프로그램에서 처리할 자료의 형태를 말합니다. 3이라는 숫자를 숫자로 처리하는지, 문자열로 처리하는지에 따라 결괏값이 달라집니다.
사람은 숫자와 문자열을 금방 알 수 있습니다. 하지만 컴퓨터에게 일을 시킬 때는 이것은 숫자이니 더하거나 빼야하고, 저것은 문자열이니 더하거나 뺄 수 없다는 것을 따로 알려 주어야 합니다. 이렇게 숫자나 문자열처럼 프로그램에서 처리할 자료의 유형을 지정해야 하는데, 이러한 자료의 형태를 '자료형' 이라고 합니다.
자바스크립트의 자료형은 크게 '원시 유형(primitive type)'과 '객체(object)'로 나뉘어집니다.
원시 유형
1. 숫자형
숫자형은 모든 프로그램에서 가장 기본이 되는 자료형입니다. C나 자바 같은 프로그래밍 언어에서는 정수와 실수를 명확히 구별하고 정수도 크기에 따라 다른 자료형을 사용합니다. 하지만 자바스크립트에서는 정수와 실수를 함께 묶어서 '숫자형' 이라고 합니다.
typeof(10) // 'number'
typeof("10") // 'string'
typeof(3.145) // 'number'
2. 문자열
문자열 또는 string 자료형은 작은따옴표(')나 큰따옴표(")로 묶은 데이터를 의미합니다. 단, 큰따옴표이든, 작은따옴표이든 문자열의 앞뒤에 붙이는 따옴표는 같아야합니다.
typeof("안녕하세요?") // 'string'
typeof("10") // 'string'
typeof("") // 'string', 빈 문자열
3. 논리형
논리형은 참(true) 거짓(false)값을 표현하기 위한 데이터 유형으로, '불리언(Boolean)유형'이라고도 합니다.
논리형에서 사용할 수 있는 값은 true와 false이고, 논리형 값은 지정한 조건에 맞는지의 여부를 확인하는 조건식에서 많이 사용합니다.
10 > 2 // true
10 < 2 // false
4. undefined
undefined는 값이 할당되지 않았을 때 변수의 초깃값입니다.
다음의 소스처럼 변수를 선언만 하고 값을 할당하지 않은 상태에서 프로그램에 사용하면 초깃값 undefined가 나타납니다.
let userName
console.log(userName) // undefined
5. null
undefined와 비슷해 보이지만 구별해서 생각해야 하는 개념입니다.
null은 값이 없거나 유효하지 않은 값이라는 의미입니다. 이에 비해 undefined는 빈 값인지, 유효한 값인지 정할 수 없는 상태입니다.
let age = null;
6. 심벌(synbol)
심벌은 에크마스크립트 2015에 새롭게 추가된 원시 유형의 자료형으로, 지금까지 살펴본 자료형과 다른 특성을 가지고 있습니다.
심벌의 가장 큰 특징은 유일성을 보장한다는 것입니다. 특히 심벌은 객체 프로퍼티의 키(key)로 사용할 수 있다는 특징이 있습니다.
예를 들어 자바스크립트 프로그램에서 오픈 소스를 가져와 사용하거나 다른 팀원이 만든 객체들을 함께 사용할 경우 객체의 키 이름이 중복될 수 있습니다. 이런 경우에 키 이름을 심벌로 지정하면 서로 충돌하지 않습니다.
객체(object)
여러개의 원시 유형을 하나로 묶어 놓은 것이라고 생각할 수 있습니다.
자바스크립트는 배열이나 함수도 객체로 취급합니다. 객체는 '속성'과 '메서드'를 가질 수 있습니다.
객체는 중괄호({}) 안에 모든 정보를 담는데, 키(key)와 값(value)으로 하나 또는 여러 개의 쌍을 만들 수 있습니다.
그리고 객체 안에서는 여러 개의 ' 키 : 값' 쌍을 쉼표(,)로 구분합니다.
객체명 = {
키 : 값,
키 : 값,
.
.
.
}
1.배열
배열도 하나의 변수에 여러 개의 값을 저장할 수 있는 유형이므로 역시 객체입니다.배열은 대괄호([]) 로 묶고 그 안에 값을 나열하는데, 각 값은 쉼표(,)로 구분합니다. 대괄호 안에 아무 값이 없으면 '빈 배열'이라고 하는데, 이것도 배열입니다.
배열명 = [값, 값, ...]
emptyArr = [] // 빈 배열
colors = ["red", "blue", "green"] // 문자열 배열
arr = [10, "banana", true] // 여러 자료형으로 구성된 배열