[Javascript]-TIL3

KEH·2021년 3월 22일
0
post-thumbnail

var, let, const 차이점

  1. varfunction-scoped이고 let, constblock-scoped이다.
    for (var i=0; i<10; i++) {
        console.log(i);
    }
    console.log(i); //10

    function loop() {
        for (var j=0; j<10; j++) {
            console.log(j);
        }
    }

    loop();
    console.log(j); //Uncaught ReferenceError: j is not defined

varfunction-scoped이기 때문에 for문이 종료된 후엔 변수 i가 살아 있지만 함수 loop()가 종료된 후 j는 에러가 발생한다.

    for (let i=0; i<10; i++) {
        console.log(i);
    }
    console.log(i); //Uncaught ReferenceError: i is not defined

    function loop() {
        for (let k=0; k<10; k++) {
            console.log(k);
        }
    }
    loop();
    console.log(k); //Uncaught ReferenceError: k is not defined

letconstblock-scoped이기 때문에 for문 종료후, 함수 종료 후 모두 error가 발생한다.

  1. var재선언이 가능하지만 letconst재선언이 불가능하다.
    var a = 'a1';
    var a = 'a2';
    console.log(a); //a2 출력

    let b = 'b1';
    let b = 'b2';   //Uncaught SyntaxError: Identifier 'b' has already been declared
  • var의 경우 재선언이 가능하기 때문에 a2가 출력되는 것을 확인할 수 있다.
  • 하지만 letconst의 경우 재선언이 불가능하기 때문에 이미 b1으로 정의된 b 변수를 b2로 재정의하는 순간 이미 선언된 변수라며 에러가 발생하는 것을 확인할 수 있다.
  1. let재할당이 가능하고 초깃값이 없어도 된다.하지만 const재할당이 불가능하고 변수 선언 시 초깃값이 반드시 존재해야 한다.
    let c;  //let은 초깃값을 설정하지 않아도 된다.
    c = 1;  
    console.log(c); //1 출력

    const d;    //error! const는 선언하는 순간 초깃값도 할당해야 한다.
    const e = 4;    //const는 반드시 선언 시 할당도 함께!
    console.log(e); //4 출력
profile
개발을 즐기고 잘하고 싶은 안드로이드 개발자입니다 :P

0개의 댓글