var, const, let 이해하기

임재희·2022년 3월 12일
0

study

목록 보기
6/10

Scope란 무엇일까?

scope는 유효범위를 뜻한다.
변수의 생존기간을 제어하며 종류는 block scopefunction scope가 있다.
자바스크립트는 block scope가 없고 function scope가 있다. (때문에 모든 변수를 맨 처음에 선언하는 것이 암묵적 룰이 되었다.)

var (function-scoped)

1. 재할당, 재정의

//변수의 선언
var a = 0;
//변수의 재선언
var a = 1;
console.log(a); //1
//변수 재할당
a = 3;
console.log(a); //3

변수는 재할당, 재정의가 가능해서 같은 변수를 다시 선언해도 ReferenceError가 나타나지 않는다.

2. 선언 생략

a = 1;
console.log(a); //1

위와 같이 선언을 하지 않은 경우도 값이 나오는 것을 볼 수 있다.

//hoisting 선언 생성
//var a;
a = 1;
console.log(a); //1

이렇게 할 수 있는 이유는 hoisting으로 함수 안에 있는 선언들을 모두 가져와 해당 유효 범위의 최상단에 선언해주기 때문이다.

3. 변수의 유효 범위

function testFun() {
  for(var i = 0;  i< 5; i++) {
   
  }
   console.log(i) //5
}

testFun();
console.log(i) //i is not defined

변수는 함수를 제외한 모든 블럭에서 접근이 가능하다.

let,const (block-scoped)

재정의 불가능

//변수의 선언
let a = 0;
//변수의 재선언
let a = 1; // Identifier 'a' has already been declared 

var은 변수의 재선언이 가능해서 많은 문제점이 있었다.
하지만 letconst는 재선언이 불가능하다.
변수를 재선언하는 경우는 자제해야 하는 방법이므로 가능하면 letconst를 사용하는 것이 좋다.

재할당이 되는 변수 let

let a = 0;
a = 1;
console.log(a); //1
const a = 0;
a = 1;
console.log(a); //Assignment to constant variable. 

letconst의 다른 점으로 let은 재선언이 가능하다는 특징을 가지고 있다. 때문에 선언을 할 때는 상수인 const로 하되, 필요에 따라 변수 let을 사용하는 것을 권장하고 있다.

참고 사이트 : var, let, const 차이점

profile
하루하루는 성실하게 인생 전체는 되는대로✏️

0개의 댓글