자바스크립트는 7개의 데이터타입이 있으며,기본 타입(원시 타입)과 참조 타입(객체 타입)으로 분류한다.
(출처 : https://kimtaehyun98.tistory.com/58)
다른 언어들은 정수,실수 구분하지만 자바스크립트는 모든 수를 실수로 처리하며 정수만 표현하기 위한 데이터 타입이 없다.
const integer = 10; //정수
const double = 10.2; //실수
const negative = -20; //음의 정수
정수로 작성해도 실수로 처리한다.
문자열 내의 문자열을 따옴표로 감싸면 따옴표는 문자열로 인식한다.
const string = 'Hello world, "I'm lee"';
// hello world, "I'm lee"
ES6부터 템플릿 리터럴이라는 문자열 표기법이 추가되었다. 백틱으로(``) 으로 표현한다.
멀티라인문자열, 표현식 삽입, 태그드 템플릿 등 문자열 처리기능을 제공한다.
표현식 삽입
문자열을 +연산자를 이용해서 연결할 수 있다.
const name= 'jhon';
const age=20;
console.log("My name is" + name + "age is" + age); //My name is jhon age is 30
이것보다 템플릿 리터럴 내에서 표현식 삽입을 통해 간단히 문자열을 삽입할 수 있다. + 연산자보다 가독성도 좋고 간편하게 문자열을 조합할 수 있다.
템플릿 리터럴은 ${}로 감싼다.
const name= 'jhon';
const age=20;
console.log(`My name is ${name} age is ${age}`); //My name is jhon age is 30
const foo;
console.log(foo); //undefined
변수 선언에 값을 할당하지 않아도 확보된 메모리 공간을 처음 할당이 이뤄질 때까지 빈 상태가 아니라 자바스크립트 엔진이 undefined로 초기화한다. 그렇기 때문에 undefined가 출력되었다.
자바스크립트는 대소문자를 구별하므로 null은 Null,NULL등과 다르다.
undefined와 달리 프로그래머가 의도적으로 값이 없다는 것을 명시할 때 사용한다.
const foo = "lee";
foo = null;
lee가 할당된 변수에 null을 다시 할당하면 이전에 참조했던 값을 명시적으로 제거하여 더 이상 참조하지 않겠다는 의미이다.그러므로 null이 할당되고 나서는 더 이상 lee를 참조하지 않는다.
C나 자바같은 정적타입언어는 변수의 타입을 변경할 수 없으며, 변수에 선언한 타입에 맞는 값만 할당할 수 있다. 정적 타입 언어는 컴파일 시점에 타입 체크를 수행한다. 만약 타입 체크를 통과하지 못했다면 에러를 발생시키고 프로그램 실행 자체를 막는다. 이를 통해 일관성을 강제함으로써 더욱 안정적인 코드의 구현을 통해 런타임에 발생하는 에러를 줄인다.
정적타입은 변수선언 할 때 타입을 선언하지만, 자바스크립트는 var, let, const키워드를 사용해 변수를 선언할 뿐이다.