mutable 데이터 타입
Let 은 ES6부터 나온 변수 선언법이다. 그 전까지는 var를 이용해왔다. 화살괄호를( {} )를 기준으로 괄호 안에 선언된 name은 지역변수로써 { } 범위 안에서만 사용이 가능하다. globalName은 global scope으로써 어디에서나 접근이 가능하다. global scope은 프로그램이 실행되고 나서 끝날 때까지 계속 메모리에 올라가있기 때문에 최소한으로 적절하게 사용하는 것이 좋다.
Var 는 let이 나오기 전에 계속 쓰였던 변수 선언법이다. 요즘은 거의 쓰지 않는 선언법이다. 그 이유는 아래와 같다.
자바스크립트 var는 선언하기도 전에 변수에 값을 할당하는 것이 가능하다. 이것이 바로 var의 hoisting이라는 개념이다.
Var hoisting이란?
변수가 어디에 선언 되어 있든지 항상 선언을 제일 위로 끌어올리는 것
(move declaration from bottom to top)
이렇게 되면 프로그램의 잠재적인 오류가 날 가능성이 많다. 규모가 큰 프로젝트 일수록 더욱 더 큰 Risk를 떠 안게 된다. 그래서, let을 쓰는 것을 권장한다.
하지만, 최신 기능을 쓰게 될 때는 호환성을 생각해야 한다.
let은 IE 제외 하고 Chrome, FireFox, Safari 거의 모든 브라우저가 지원한다.
immutable데이터 타입
Const는 한번 할당하게 되면 값이 절대 바뀌지 않는다. 값을 선언함과 동시에 할당하면 그 뒤로는 절대 값을 바꿀수 없다. (read only)
Const를 사용하면 좋은 이유?
- 보안성
- 쓰레드 안정성
- 개발자의 실수를 줄임
number는 숫자형 타입이다. 따로 number라고 타입을 명시하지 않아도 숫자를 할당하게 되면 자동으로 숫자형으로 정해진다.
끝에 n을 붙이게 되면 bigint형이 된다. 다만, 현재는 chrome과 firefox에서만 지원이 된다.
string도 number와 같이 따로 정의를 하지 않아도 할당한 값에 ‘ ‘ 가 있으면 자동으로 string형으로 인식한다. string template( ${ } )을 이용하게 되면 백틱( ` )을 이용해서 사용해야 한다.
boolean 타입은 아래와 같이 정의한다.
false : 0, null, undefined, NaN, ‘’
true : any other value
null은 값이 할당된 경우이도 undefined는 텅텅 빈 값을 말한다.
symbol은 동시에 다발적으로 우선순위를 주고 싶을 때 고유한 식별자가 필요할 때 사용한다.
문자열 더하기 숫자형인 경우 숫자를 문자열로 인식한다. 자바스크립트는 런타임에서 타입이 정해지기 때문에 이것 때문에 에러가 런타임으로 발생되는 경우가 많다.
그래서 나온 것이 ? TypeScript 이다.
TypeScript는 자바스크립트 위에서 작동한다.