let, const, var

김선우·2022년 6월 25일
0

세 가지 변수 선언 방식에 대해서 말하자면 일단 변수 라는 개념에 대해 잠시 짚고 넘어가야할 것 같다.

변수 variable 는 하나의 값을 저장하기 위해 확보한 메모리 공간 그자체, 또는 그 메모리 공간을 식별하기 위해 붙힌 이름을 일컫는다.

변수에 어떠한 값 value를 지정해주는 것을 할당이라고이라고 하며, 변수에 저장한 값을 읽는 것을 참조 reference , 자바스크립트 엔진에 알리는 것을 선언declaration 이라고 한다.

변수의 선언은 let var const 키워드로 할 수 있으며, ES6에서 const와 let이 추가되었다.

변수 선언과 할당은 하나의 문(statement)으로 단축 표현할 수 있지만, 두 개의 실행 시점이 다르다. 변수 선언이 호이스팅되어 런타임 이전에 실행되지만, 값의 할당은 소스코드가 순차적으로 실행되는 런타임에 실행된다.

따라서 변수의 할당과 console을 실행하는 위치에 따라 반환되는 값이 다르다.

재할당은 변수에 저장된 값을 다른 값으로 변경하는 것으로, 만약 변경할 수 없는 값이라면 이는 변수가 아니라 상수(constant)라 부른다.

기본적으로 var 키워드는 세가지 문제점이 있는데,

  • 변수 중복 선언 가능하여, 예기치 못한 값을 반환할 수 있다.
  • 함수 레벨 스코프로 인해 함수 외부에서 선언한 변수는 모두 전역 변수로 된다.
  • 변수 선언문 이전에 변수를 참조하면 언제나 undefined를 반환한다.

이를해결하기 위해 나온 것들이 바로 letconst 이다.

  • let 은 변수 중복선언이 불가능하지만, 값은 재할당이 된다.

ex)

let aaa = 5
let aaa = 10

console.log(aaa) // 10
  • const는 선언과 초기화를 반드시 동시에 해야하며, 값의 재할당이 불가능하다.
const name = '선우'
name = '선우2' // output: Uncaught TypeError: Assignment to constant variable.

const name = {
  str: 'ksw',
}
name.str = 'aaa'

console.log(name) // output: { eng: "aaa" }
profile
생각은 나중에..

0개의 댓글