1_1. 숫자가 제일 앞에 올 수 없다.
ex : let myVeryLongLongName; 변수명을 시작할때는 소문자 나머지 단어는 대문자로 쓰는법
ex : let MyVeryLongLongName; pascal (Pascal case)표기법
ex : let myVeryLongLongName;
ex : let MyVeryLongLongName;

var는 함수 내부에 선언된 변수만 지역변수로 한정하며, 나머지는 모두 전역변수로 간주한다.
한번 선언된 변수를 다시 선언할 수 있다.
선언하기 전에 사용할 수 있다.
초기화 이후에 반복에서 값을 재할당 할수 있다.
var는 함수 스코프 : 함수 내에서 선언한 변수만 지역변수가 되는 것이다.
console.log(varName); 호이스팅 다른언어에서는 쓸수 없지만 javascript에서는 쓸 수 있다. javascript라는 엔진이 있고 거기 파일에 구동이 된다. 변수가 선언의 과정이 이루어지고 runtime에서 코드에 실제로 사용이 된다. 변수들을 가지고 메모리를 잡아놓고 그뒤에 다시 코드를 실행중에 진행을 하면서 사용을 한다. 그래서 사용 가능하다.
var varName = '박태현';
가장 오래된 버전에서 사용하는 변수 타입, 가변성이 강하고 중복선언의 경우에 불편하다. 전역변수가 많으면 끝날때까지 메모리를 소모하기 때문에 효율적이지 않다.
전역변수 프로젝트 전반에서 사용하는 변수
console.log(varName);
if (true)
{
{다른영역.}
지역변수 자동으로 메모리를 해제해준다. 사용할때만 메모리를 쓰고 사용이 끝나면 바로 메모리를 해제해준다. 메모리 사용 측면에서 효율적임.
var varName = 'TaehyunPark';
}
console.log(varName); TaehyunPark이 찍힌다.

let은 변수의 중복선언은 불가능 하지만 재할당이 가능하다.
let letName = 'pth';
console.log(letName); // pth
if(true)
{ // 지역변수
let letName = 'parktaehyun'
console.log(letName); parktaehyun
}
// let letName = "박태현"; 같은 영역안에서 같은 변수를 중북해서 선언할수 없다.
console.log(letName); pth

재할당할 일이 없을때 사용한다. 값이 수정될 일이 없는 변수 (상수라고 하지만 내용을 변환할 수 있다. 클래스를 사용하는 오브젝트에서는 변경 가능하다.)
ex : 게임에서 1스테이지 맵의 크기 (일반적으로 변환하지 않는것)
ex : 1스테이지 보스이름 (일반적으로 변환하지 않는것)
document를 변수로 선언할 때 이미 만들어져 있는 객체를 가져와서 쓰는 것이기 때문에 const로 가져와서 쓴다.
상수 이기 때문에 선언하면서 동시에 초기화를 해줘야 한다.
const constName = "Taehyun"; //const는 선언과 초기화를 동시에 해줘야 한다.
constName = "pth";
console.log(constName); 실행해서 문제가 뜬다는 것은 RunTimeError
값을 재 할당할 필요가 있으면 let 없으면 const를 사용한다. var는 왠만하면 사용하지 않는다.
let 과 const는 블록스코프
complie runtime 차이 js파일을 만들면 사람이 알기 쉬운 언어에서 컴퓨터가 동작 할 수 있는 언어로 변환을 시켜주는 것을 complie
runtime 실제로 바낀 목적 파일을 실행한다.