Var
var변수와 function을 사용한 선언적 함수는 다른 실행 코드에 우선해서 최초에 메모리에 로딩하게 된다.
이것을 '호이스팅' 이라고 한다.(끌어올리다)
이 때 var는 프로그래밍 순서의 혼란을 가져오므로 var 대신 let, const를 권장한다.
var aaa = 10;
console.log(aaa);
var aaa = '홍길동'; //위의 10을 덮어써버린다.
console.log(aaa); //'홍길동'이 출력됨.
Let
- 동일 변수명으로 재선언
let aaa = 10;
console.log(aaa);
//위에 선언된 변수를 재선언 할 수 없다.
//Uncaught SyntaxError: Identifier 'aaa' has already been declared
let aaa = '홍길동';
console.log(aaa);
var은 동일한 변수명으로 선언시 값이 덮어써지지만, let은 동일한 변수명으로 다시 선언 할 수 없다.
- let 변수의 범위
let aaa = '기러기'
//let은 함수와 블록 모두 지역변수의 특징을 가지므로
//지역을 벗어나면 소멸하게 된다.
{
let aaa = '두루미'
console.log(aaa);
}
console.log(aaa);
- let의 프로그래밍 처리 방식
var와 같은 '호이스팅'은 동작하지 않고
위에서 아래의 흐름대로 프로그래밍을 처리할 수 있다.
*/
// console.log(i); //Uncaught ReferenceError: Cannot access 'i' before initialization
let i;
console.log(i); //undefined
i = 10;
console.log(i); //10