본문 바로가기

Study/JavaScript

Variables

Variables Vs. Data

무엇이 변수이고 무엇이 데이터일까?

 

let myAge = 23;

 

위의 예제에서 myAge는 변수가 되고, 23은 데이터가 된다. 즉 변수는 데이터에 의미를 부여해 주는 이름이다. 23이라는 숫자는 내가 myAge라고 이름을 붙이기 전까지는 그냥 숫자였지만, naming한 후에는 내 나이가 23살이라는 의미를 갖게 된다. 즉 변수의 이름을 잘 지어야 데이터가 의미하는 바가 무엇인지를 쉽게 유추할 수 있다.

반면 let num = 23; 이라고 하면 num이 무엇을 의미하는 건지 유추하기 어렵다. 23이 숫자인 건 알겠는데, 그게 어떤 숫자야? 같은 상황이 벌어진다. 

Why we use Variables?

변수와 데이터가 무엇인지 알았으니, 왜 programming에서 변수와 데이터를 사용하는지 알아보자.

 

어떤 웹 어플리케이션이든 Input => Process => Output의 과정을 거치게 된다. 예를 들어 사용자가 메뉴 버튼을 클릭하면 숨겨져 있던 메뉴의 목록을 보여주는 기능이 있다고 생각해 보자. 이 때 사용자의 클릭이 input이 되고 메뉴의 목록이 output이 된다. 그러면 process 과정은? 우리가 작성하는 웹 어플리케이션의 코드이다. 이  process를 작성하려면 input 정보가 필요하다. 클릭을 했는지 안했는지 알아야 메뉴를 보여주든 말든 하는 것이다. 클릭과 같은 input(data)을 저장할 장소(variable)를 사용하지 않으면 process가 불가능 해 진다. 

How can we use Variables?

Declaration 

let myAge = 23으로 돌아와서 let을 살펴보자. let이라는 keyword는 myAge가 변수임을 선언(declaration)해 주는 역할을 한다.

 

예를 들어 let이라는 키워드 없이 myAge = 23 으로 코드를 작성하면, 코드를 해석하는 interpreter는 myAge가 무엇인지 알 수 없다. myAge를 메모리 주소(변수 등을 저장하는 장소)를 할당 받는 변수로 사용하고 싶다면, let keyword를 사용해서 그 사실을 알려야 한다. let을 제외한 변수를 선언하는 keyword는 const, var이 있다. 

let vs. const vs. var

let myAge = 23; 
myAge = 24; // 재할당이 가능하다

const myAge = 23;
myAge = 24; // 재할당이 불가능해 에러가 발생한다

 

let과 const는 데이터를 재할당(re-assign) 하는 것이 가능하냐, 불가능하냐에 그 차이가 있다. let을 이용해서 변수를 선언하면, 내 생일이 지났을 때 myAge = 24; 라고 새로운 나이 데이터로 값을 재할당할 수 있다. 하지만 const를 이용하면 데이터를 변경할 수 없기 때문에 const mySex = female; 처럼 변하지 않는 데이터를 할당하는 것이 좋다. programming을 할 때에는 let 보다 const를 쓰는 것이 좋은데, 누군가 실수로 데이터를 변경할 가능성을 차단하기 위해서이다.

 

+) 재할당 가능 여부 뿐만 아니라, hoisting 방법에 따라 let, const, var를 비교할 수도 있다. 

+) strict mode가 아닌 sloppy mode에서는 키워드를 작성하지 않고도, 변수를 선언할 수 있는데 이에 대한 내용은 추후에 Scope Chapter에서 다룰 것이다.  

Value Assignment 

assignment operator인 '=' 을 살펴보자. 이 연산자를 이용하면 메모리에 저장할 데이터를 변수에 할당(assignment)할 수 있다. 즉 변수에 값을 할당하려면 '=' 연산자를 사용하면 되고, 그게 다이다. 

'Study > JavaScript' 카테고리의 다른 글

Function & Functional Programming  (0) 2022.03.26
Control flow statement  (0) 2022.03.25
Operator  (0) 2022.03.25
Data Type  (0) 2022.03.24
What is Javascript?  (0) 2022.03.24