자바스크립트는 7개의 타입을 가지고 있다.
- 원시타입: boolean ,null, undefined, number,string, symbol
(ES6 에서 symbol 타입 추가됨)- 객체타입
Symbol은 아직 사용해 본적이 없는 타입니다.
Symbol은 고유하고 변경할 수 없는 식별자를 생성하며, 한 번 생성하면 복사할 수 없다고한다.
java나 C는 정수(int/long),실수(float)를 자료형으로 제공한다.
하지만 자바스크립트는 숫자타입만 제공한다.
자바스크립트는 정수타입을 제공하지 않기에 모든 숫자타입은 실수로 처리한다.
var integer = 10; // 정수
var double = 10.12; // 실수
var negative = -20; // 음의 정수
//숫자타입은 모두 실수로 처리된다.
console.log(1 === 1.0); //true
console.log(4 / 2); //2
console.log(3 / 2); //1.5
문자열 타입은 덱스트 데이터를 나타낸다.
은따옴표(''), 큰따옴표(""), 백틱을 사용
var string; string = '문자열'; stirng = "문자열"; stirng = `문자열`;//(ES6부터 지원) string = '작은따옴표로 감싼 문자열 내의 "큰따옴표"는 문자열로 인식된다.' string = "큰따옴표로 감싼 문자열 내의 '작은따옴표'는 문자열로 인식된다."
ES6부터 도입되었다. 템플릿 리터럴은 멀티라인 문자열, 표신식 삽입, 태그드 템플릿과 같은 편리한 문자열 처리 기능을 제공한다.
var template = `template literal`;
console.log(template);//template literal
불리언 타입의 값은 true, false 2개 뿐이다.
var 키워드로 선언한 변수는 undefined로 초기화 된다.
변수를 선언하고 아무런 할당없이 변수를 참조하면 undefined가 반환됨.
변수에 값이 없다는 것을 의도적으로 명시할 때 사용한다.
한번도 사용해보지 않은 타입이다...
다른 값과 중복되지 않는 유일무이한 값이다.
var key = Symbol('key');
console.log(typeof key); // Symbol
//객체 생성
var obj = {};
// 이름이 충돌되지 않도록 심볼을 프로퍼티 키로 사용한다.
obj[key] = 'value';
console.log(obj[key]); // value
값은 메모리에 저장하고 참조할 수 있어야한다.
(몇 바이트의 메모리 공간을 사용해야 낭비없이 저장할 수 있는지 알아야함)
자바스크립트의 모든 값은 데이터 값을 가지지만 변수는 데이터 타입을 가지지 않는다.
c나 자바 같은 정적 타입 언어는 변수를 선언할 때 데이터 타입을 사전에 선언해야한다.
하지만 자바스크립트는 변수를 선언할 때 타입을 선언하지 않는다.
var,let,const만 사용하고 어떤 타입의 값이라도 할당 가능하다.
동적타입언어는 변수에 어떤 타입의 값이라도 할당 할 수있지만 모든 아키텍처에는 위험이 있다고한다. 예를 들어서 숫자 타입의 변수일 것이라고 예측했지만 사실은 문자열 일 수도있다. 동적 타입 언어는 유연성은 높지만 신뢰성은 떨어진다.
변수 사용에 주의할 점
- 변수는 필요한 경우에 제한적으로 사용한다.
- 변수의 스코프(변수가 접근할 수 있는 유효 범위)를 최대한 좁게 만들어야한다.
- 전역변수 사용x
- 변수보다는 상수o (let, var 대신 const~~)
(상수는 변수처럼 값을 할당받을 수 있지만 한번 할당한 값을 바꿀 수 없다)- 의미있는 변수 네이밍사용 하기