티스토리 뷰

ES6 이전의 변수 선언 : var

기존의 자바스크립트에서 변수를 선언하던 방식은 오로지 var 키워드 한 가지였다.
Function-scope 내에서 이미 선언된 변수를 재선언할 수 있기때문에 예상 못한 버그가 생기기도 쉽다.

1
2
3
4
5
6
7
8
function this_is_var() {
    var test = "outer-var";
    if (test !== null) {
        var test = "inner-var";  // var 재선언 가능
        console.log(test);  // "inner-var"
    }
    console.log(test);  // "inner-var", function-scope 특성.
}
cs

1
2
3
4
5
6
7
function this_is_var_2() {
    if ("pass") {
        var test = "inner-var";
        console.log(test);  // "inner-var"
    }
    console.log(test);  // "inner-var", function-scope 특성2.
}
cs

ES6 부터의 변수 선언 : const, let

ES6에서 새롭게 등장한 변수 선언 방식으로 const와 let이 있다.

  • const : 이름 그대로 상수를 선언, 한 번 선언되면 변경 불가능.
  • let : 일반적인 변수를 선언, 선언되더라도 변경 가능.

1
2
3
4
5
6
7
8
function this_is_let() {
    let test = "outer-let";
    if ("pass") {
        var test = "inner-let"// let 재선언 불가능, 전혀 다른 변수.
        console.log(test);  // "inner-let"
    }
    console.log(test);  // "outer-let", block-scope 특성.
}
cs

1
2
3
4
5
6
7
function this_is_let_2() {
    if ("pass") {
        let test = "inner-let";
        console.log(test);  // "inner-let"
    }
    console.log(test);  // ReferenceError: test is not defined, block-scope 특성.
}
cs

1
2
3
4
function this_is_const() {
    const test = "Im-Const"// const : 상수로 선언, 변경 불가능.
    const test = "Im-Const, too"// SyntaxError: Identifier 'test' has already been declared
}
cs

짧은 결론

var로 선언한 많은 변수들 중에 의외로 값이 변할 필요가 없는 경우가 많다.
이를 const로 대체하고, 나머지를 let으로 사용한다면 조금이나마 버그에 안전한 코딩이 될 것이다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함