모든 프로그래밍 언어는 내장 자료형이 존재하고, 언어마다 내장 자료형이 다르다.
이번 포스팅에서는 자바스크립트의 내장 자료형에 대하여 알아보자.
자바스크립트에서는 변수의 타입을 미리 선언할 필요가 없다.
값이 할당되는 과정에서 자동으로 타입이 결정된다.
따라서 같은 변수에 여러 타입의 값을 할당할 수 있는데 이를 동적 타이핑(Dynamic Typing)이라고 한다.
원시 자료형의 값은 변경 불가능한 값이다.
원시 값 자체와, 원시값을 할당한 변수를 혼동하지 말자 !
변수는 새로운 값을 다시 할당할 수 있지만, 이미 생성한 원시 값은 객체, 배열, 함수와는 달리 변형이 불가능함을 뜻한다.
let intger = 126; // 정수
let float = 1.26; // 실수
let negative = -126; // 음수
let binary = 0b1111011; // 2진수
let octal = 0o111; // 8진수
let hex = 0xAB; // 16진수
let nan = parseInt('abc') // NaN => 부정확하거나 정의되지 않은 연산
let inf = 1 / 0 // Infinity => Infinity : 양의 무한대, -Infinity : 음의 무한대
console.log(binary); // 123(10진수로 변환한 숫자)
console.log(octal); // 73(10진수로 변환한 숫자)
console.log(hex); // 171(10진수로 변환한 숫자)
let str1 = "string";
let str2 = 'string';
let str3 = `string ${str1}`; // 백틱 안에 ${statement} 를 사용하면 변수나 표현식을 문자열 중간에 삽입할 수 있다.
let str4 = "'string'"; // 큰 따옴표 안에 작은 따옴표
let str5 = '"string"'; // 위와 반대의 경우
let str6 = "\"string\""// 큰 따옴표를 한 종류로 출력하고 싶은 경우(작은 따옴표도 마찬가지)
console.log(str1);// string
console.log(str2);// string
console.log(str3);// string string
console.log(str4);// 'string'
console.log(str5);// "strnig"
console.log(str6);// "string"
let yes = true;
let no = false;
console.log(typeof yes);
console.log(typeof(no));
변수 혹은 상수가 선언되었지만 아무런 값도 할당되어지지 않은 상태의 자료형이다.
선언 이후에 값을 할당해주지 않은 변수나, 존재하지 않는 객체 프로퍼티에 접근할때 undefined가 반환된다. 이는 자바스크립트 엔진이 자동으로 undefined 값을 할당하는것이다.
let notYet;
console.log(notYet); // undefined
let test = null;
console.log(test); // null;
원시 자료형은 문자열이든 숫자든 한 가지만 표현할 수 있지만, 객체는 이름과 값을 가지는 속성과 메소드를 포함한 복잡한 개체이다.
속성 값은 객체를 포함하여 어떠한 자료형도 될 수 있기 때문에, 복잡한 데이터 구조를 형성하는게 가능해진다.
속성은 키값으로 식별되어지며, 키 값은 String 값이다.
참조 자료형이라고도 불린다.
let obj = {
name : 'hoon',
sayHi : function() {
console.log(`${name}, hi`);
}
}
console.log(obj);// { name: 'hoon', sayHi: [Function: sayHi] }
let array = [0, 2, 'false', 'c', 'true'];
console.log(array[0]); // 0
console.log(array[1]); // 2
console.log(array[2]); // 'false'
let func = () => {
return 0;
};