[JavaScript] 변수 선언과 데이터 할당

Mark·2022년 8월 9일
0
post-thumbnail

1. 변수 선언

변수란 변경 가능한 데이터가 담길 수 있는 공간, 그릇이다. 어떤 변수를 선언하면 컴퓨터는 메모리에서 a라는 변수명을 가진 주소를 검색해 해당 공간에 담긴 데이터를 반환한다.

let a; // 변수 선언 
  • 변수 선언은 var, const, let 키워드로 할 수 있다.
  • 자바스크립트에서 변수 선언은 선언→초기화 단계를 거쳐 수행된다.
  • 선언 단계 : 변수명을 등록하여 자바스크립트 엔진에 변수의 존재를 알린다.
  • 초기화 단계 : 값을 저장하기 위한 메모리 공간을 확보하고 암묵적으로 undefined를 할당해 초기화

1) var

var name = "mark"
console.log(name);

var name = "markya"
console.log(name)
  • var의 경우 변수를 한 번 더 선언해도 에러가 나지 않는다.
  • var은 어떠한 규칙도 가지고 있지 않다.
  • 생성된 후 업데이트가 될 수도 있다.
  • 하지만 스스로 오류가 발생할 수 있다.
  • 코드가 어떤 것을 수행하는지 알 수 없다는 단점
  • 따라서 var는 되도록 쓰지 않는 것이 좋다.
  • 유연한 변수 선언으로 테스트에는 편하지만, 코드량이 많아진다면 에러를 찾기 힘들 수 있다.
  • ES6이후 이를 보완하기 위해 추가된 변수 선언 방신인 letconst가 있다.

2) let

let name = "mark"
let name = "markya" // 'name' has already been declared
  • 이미 선언되었다는 에러 메세지가 나온다.
  • 변수 재선언은 안된다.
  • 하지만 변수 재할당은 가능하다.
// 변수 재할당 
let name = "mark"
name = "markya" 

3) const

// 변수 재할당 
const name = "mark"
const name = "markya" 
console.log(name) //'name' has already been declared

name = "markya" 
console.log(name) // Uncaught TypeError: Assignment to constant variable.
  • 변수 재선언, 재할당 모두 불가능하다.
  • 따라서 바뀌지 않을 값은 const로 선언해주면 된다.

TIP : 모든 변수는 const로 선언하고, 변경 여지가 있는 경우 let으로 선언

2. 데이터 할당

👉 메모리 영역에서 일어나는 일

  • 데이터를 저장하기 위한 별도의 메모리 공간을 다시 확보
  • 데이터 저장
  • 그 주소를 변수 영역에 저장

👉  선언과 할당을 나눠서 하거나, 동시에 해도 자바스크립트 엔진은 같은 동작 수행

let a; // 변수 a 선언
a = 'abc' // 변수 a에 데이터 할당 

let a = 'abc' // 변수 선언과 할당을 한 문장으로 표현 
  • a라는 이름을 가진 주소를 검색해서 ‘abc’라는 문자열을 할당할 때 해당 위치에 문자열 ‘abc’를 저장하고 그 주소를 변수 영역에 저장한다.

👉 그렇다면, 변수 영역에 직접 대입하지 않고 이 단계를 거치는 이유는?

  • 데이터 변환을 자유롭게 하기 위함
  • 메로리 효율적 관리
  • 중복된 데이터 처리시 효율성이 높아진다.
  • 효율적으로 데이터 변환을 처리하려면 변수와 데이터를 별도의 공간으로 나누어 저장하는 것이 최적의 방법이다.

👉 결론!

변수명이 데이터를 저장하는 방식은 직접 데이터를 저장하는 것이 아니라 해당 데이터를 가진 주소값을 저장하는 것이다!


참고 자료

https://overcome-the-limits.tistory.com/261

https://velog.io/@imjkim49/자바스크립트-데이터-타입-정리

https://velog.io/@bathingape/JavaScript-var-let-const-차이점

https://velog.io/@jujusnake/Javascript-변수-선언과-데이터-할당

profile
개인 공부 정리

0개의 댓글