Block scope
{ }
안에서만 서로 작동하고 외부에 있으면 빈값이 출력된다.
global scope
를 사용하면 어디서든 접근이 가능하다. 과다하게 사용X.
let globalName = "global name";
{
let name = "Min";
console.log(name);
name = "Seungit";
console.log(name);
console.log(globalName);
}
console.log(name);
var
- 보통은 변수 선언 뒤 사용한다.
- 하지만
var
의 경우에는 무시하고 사용할 수 있다. (선언 전 사용가능)
block scope
를 무시한다.
- ES6 이후 let으로 사용권장.
var hoisting
- hoisting은 끌어올리다 라는 뜻으로 변수와 함수등의 선언이 맨 위로 올라가 정의되지 않은
undefined
로 값이 초기화되는 매커니즘이다.
- 자세한 호이스팅에 대한 내용
console.log(age);
var age = 20;
let
- 변수선언 하는 단 하나의 키워드.
- ES6에서 추가됨.
- 변경이 가능한
mutable
타입의 데이터.
- 읽고 쓰기가 가능.
let age;
age = 20;
console.log(age);
age = 30;
console.log(age);
age = 20;
let name;
const
- 한번 할당하면 절대 값이 바뀌지 않는다.
Immutable
타입의 데이터.
favor immutable data type always for a few reasons
- 값이 변결될 우려가 없는 데이터를 사용할 시 적용해라.
- security, thread safety, reduce human mistakes.
- 읽기만 가능하다. 변경이 안되기 때문에..
const age = 20;
const name = "seungit";
name = "Min";