Let, Const 선언의 차이

Yeonkor·2020년 9월 9일
0

Javascript

목록 보기
1/12

Let과 const는 자바스크립트에서 등장한 기존의 var 변수 선언을 대체할 수 있는 종류들로써, ES6에서 새로이 등장한 선언 가능한 변수들이다.

[1] let

구문은 블록 유효 범위를 갖는 지역 변수를 선언 하며, 선언과 동시에 임의의 값으로 초기화할 수도 있다.

let은 전역 객체의 속성 값을 생성하지 않는다. let 으로 선언된 변수는 변수가 선언된 블록 내에서만 유효하며, 당연하지만 하위 블록에서도 유효하다. 추가로 프로그램이나 함수의 최상위에서는 let과 var은 서로 다르게 행동한다. 따라서 아래 코드에서 this의 속성값으로 testVar와 testLet을 호출했을때의 결과는 다음과 같을 것 이다.

var testVar = 'global'; 
let testLet = 'global';

console.log(this.testVar); //"global" 전역 객체의 속성 x를 생성
console.log(this.testLet);// undefined 전역 객체의 속성 y를 생성하지 않음

상위 스코프에서 하위 스코프로의 변수로써 유효함을 갖는다는 것은 let 과 var가 갖는 유사점이지만, var는 함수 블록 이외의 블록은 무시하고 선언된다는 점이 다르다.

따라서 let은 속한 블럭에 따라 그 유효범위가 명확히 구분지어지기 때문에 [1] 유동성을 갖어야 하거나, [2] 스코프에 따른 변수의 의미를 명확히 구분짓기 위해선 let을 사용하는 것이 더 좋을 것 같다.

function varTest() {
  var x = 1;
  if (true) {
    var x = 2;  // 상위 블록과 같은 변수!
    console.log(x);  // 2
  }
  console.log(x);  // 2
}

function letTest() {
  let x = 1;
  if (true) {
    let x = 2;  // 상위 블록과 다른 변수
    console.log(x);  // 2
  }
  console.log(x);  // 1
}
function vartest()

[2] Const

const 선언은 블록 범위의 상수 를 선언한다. 상수는 let 문을 사용하여 정의된 변수와 마찬가지로 블록 범위(block-scope)의 데이터 타입이다. 상수의 값은 재할당할 수 없으며 다시 선언할 수도 없는 것이 가장 큰 특징이다.

const number = 42;

try {
  number = 99;
} catch (err) {
  console.log(err);
  // expected output: TypeError: invalid assignment to const `number'
  // Note - error messages will vary depending on browser
}

console.log(number);
// expected output: 42
profile
CTO를 꿈꾸는 CDO

0개의 댓글