자바스크립트 변수 vs 상수

변수 let

  • 변하는 값..이라고 쉽게 얘기하지만 정확하게 얘기하자면, 데이터를 담고 있는 공간을 가리키는 이름임.

  • 꼭 선언 후에 값을 할당해야 함. 반대로 할 경우 오류가 남.

  • 선언 후 초기화를 해줘야 함, 그래야 예기치 않은 오류가 생기는 것을 방지 할 수 있음.

let 롯데리아 = "햄버거";

롯데리아, 라는 변수명을 정했고 그 안에 햄버거라는 값을 할당했음.
콘솔에 찍었을 때 햄버거라는 값이 할당 되었음을 확인함.

image

+++ undefined는 선언만 했을 뿐 값이 할당되지 않았음을 얘기하고 있음.


상수 const

  • 변수와는 달리 하나의 값만 할당할 수 있음. 한번 담으면 바꿀 수 없음.

     

  • 한번 담고 나면 바꿀 수 없기 때문에 선언과 동시에 초기화를 해야 함.

  • 그래서 보통 여러 번 값을 할당할 때 보다는 변하지 않을 값으로 할당할 때 쓰기에 적합함.

     

    image선언 후 초기화 하고 나서 호출했을 때 잘 나옴.

     

    반면에 선언 후 할당하려고 하니 오류 남.
    image



    var

이것도 변수 선언 키워드임. 근데 안 씀.

보통 변수는 선언을 하고 나서 값을 할당할 수 있는데, 얘는 값을 할당하고 선언을 해도 동작이 되는 미친놈임.

console.log(a); // undefined
var a = 10;
console.log(a); // 10

실제로 내부는 이럼.

var a;          // 선언이 먼저 '끌어올려짐'(hoisting)

console.log(a); // 아직 값이 없으니까 undefined

a = 10;         // 이제 값 할당

console.log(a); // 10

선언이 코드의 맨 위로 끌어올려지는 현상 = 호이스팅이라고 함.

즉, “호이스팅은 변수 선언만 코드 맨 위로 끌어올려지는 현상이고,
var는 그게 적용돼서 ‘선언 전에도 쓸 수 있는 것처럼 보이는’ 애.”

= 값이 올라가는 게 아니라, 선언만 올라간다

 

이거 쓰면 코드 오류 나고, 꼬이고 {} 블럭 스코프 무시함.

 

그래서 요즘은 안 쓰고 변수는 let, 상수는 const를 쓰는 거임.

댓글을 작성해보세요.

채널톡 아이콘