JS

var,let

영하10도 아아 2024. 3. 11. 21:02

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