값의 종류. 자바스크립트의 모든 값은 데이터 타입을 갖는다.
숫자
자바스크립트는 하나의 숫자타입만 존재
배정밀도 64비트 부동소수점 형식을 따른다. 모든 수를 실수로 처리, 정수 표현 타입 존재X
자바스크립트는 별도 진수 타입 제공이 없기 때문에 숫자 값을 참조하면 모두 10진수로 해석한다.
정수타입이 없기 때문에 정수 나눔 연산을 해도 실수가 나올 수 있다.
(Infinity, -Infinity, NaN)
문자열
문자열을 따옴표로 감싸는 이유는 키워드나 식별자 같은 토큰과 구분하기 위해서다.
만약 문자열을 따옴표로 감싸지 않으면 자바스크립트 엔진은 키워드나 식별자 같은 토큰으로 인식한다.
이스케이프 시퀀스
undefined
null
심벌
다른 값과 중복되지 않는 유일무이한 값. 따라서 주로 이름이 충돌할 위험이 없는 객체의 유일한 프로퍼티 키를 위해 사용한다.
심벌 이외의 원시 값은 리터럴을 통해 생성하지만 심벌은 Symbol 함수를 호출해 생성한다. 이때 생성된 심벌 값은 외부에 노출되지 않으며, 다른 값과 절대 중복되지 않는 유일무이한 값이다.
객체, 함수, 배열 등
자바스크립트의 데이터 타입은 크게 원시 타입과 객체 타입으로 분류
근본적으로 다르기 때문이다.
자바스크립트는 객체 기반의 언어, 자바스크립트를 이루고 있는 거의 모든 것이 객체.
자바스크립트의 변수에 어떤 데이터 값이라도 자유롭게 할당 가능
정적 타입 언어는 변수 선언 시점에 변수의 타입이 결정되고 변수의 타입을 변경할 수 없다.
값을 할당하는 시점에 변수의 타입이 동적으로 결정되고 변수의 타입을 언제든지 자유롭게 변경할 수 있다.
변수의 선언이 아닌 할당에 의해 타입이 결정된다. 언제든지 변수 타입은 동적으로 변할 수 있다.
현재 변수에 할당되어 있는 값에 의해 변수의 타입이 동적으로 결정된다.
1. 변수의 개수는 필요한 만큼 최소한으로 유지
2. 변수의 유효 범위는 최대한 좁게
3. 전역 변수는 최대한 자제
4. 변수보다는 상수를 사용하기
5. 변수 이름은 변수의 목적이나 의미를 파악할 수 있도록 네이밍
코드의 존재 목적 : 단순히 동작 아님. 개발자를 위한 문서 => 가독성이 좋아야 함.