# 02. 변수

## 변수

변수는, 바뀔수 있는 값을 말합니다. 한번 값을 선언하고 나서 바꿀 수 있습니다.

```javascript
let value = 1;
console.log(value);  // 결과) 1

value = 2;
console.log(value);  // 결과) 2
```

변수를 선언 할 때에는 이렇게 `let` 이라는 키워드를 사용합니다.&#x20;

> **\*주의\***
>
> 한번 선언했으면 똑같은 이름으로 선언하지 못합니다.

이런 코드는 오류가 발생합니다.

```javascript
let value = 1;
let value = 2;
```

## 상수

상수는, 한번 선언하고 값이 바뀌지 않는 값을 의미합니다. 즉, 값이 고정적이죠. \
상수를 선언 할 때에는 다음과 같이 선언합니다

```javascript
const a = 1;
```

이렇게, 상수를 선언 할 때에는 `const` 키워드를 사용합니다.\
상수를 선언하고 나면, 값을 바꿀 수 없습니다.\
한번 다음 코드를 입력해보세요.

```javascript
const a = 1;
a = 2;        // 결과) Error "a" is read-only
```

## var(ES 5)

변수를 선언하는 또 다른 방법으로, `var` 이라는 키워드가 있습니다.&#x20;

> \*주의\*
>
> 위에서 const, let를 알아봤고, 이번에는 var라고 하는 키워들을 알아봤습니다.\
> 절대로 이 3가지를 혼합해서 쓰지 마세요!!

```javascript
var a = 1;
var a = 2; // 이렇게도 사용가능하다.
```

#### &#x20;<a href="#undefined" id="undefined"></a>

## 데이터 타입

우리가 변수나 상수를 선언하게 될 때, 숫자 외에도 다른 값들을 선언 할 수 있습니다. \
종류는 굉장히 많은데요 그 중에서 가장 기본적인 것들을 알아보겠습니다.

### 숫자 (Number)

우선, 이미 사용해보았지만, 숫자는 그냥 바로 값을 대입하면 됩니다.

```javascript
let value = 1;
```

### **문자열 (String)**

그리고, 텍스트 (주로, 프로그래밍 언어에서는 이를 문자열이라고 부릅니다.) \
형태의 값은 작은 따옴표 혹은 큰 따옴표로 감싸서 선언합니다.

```javascript
let text = 'hello';
let name = '좌봐스크립트';
```

작은 따옴표와 큰 따옴표 사용에 있어서 큰 차이는 없습니다. \
둘다 사용하셔도 되는데, 하나만 선택하셔서 사용하시면 됩니다. 저는 개인적으로 작은 따옴표 사용을 선호합니다.

### **참/거짓 (Boolean)**

이번에는 boolean 이라는 것에 대해서 알아보겠습니다. \
boolean 은, 참 혹은 거짓 두가지 종류의 값만을 나타낼 수 있습니다.

```javascript
let good = true;
let loading = false;
```

참은 true, 거짓은 false 입니다.

### **null 과 undefined**

자바스크립트에서는 "없음" 을 의미하는 데이터 타입이 두 종류가 있는데요\
하나는 `null` 이고 하나는 `undefined` 인데, 둘의 용도가 살짝 다릅니다.

null 은 주로, 이 값이 없다! 라고 선언을 할 때 사용합니다.

```javascript
const friend = null;
```

반면, undefined 는, 아직 값이 설정되지 않은 것을 의미합니다.

다음 코드를 입력해보세요.

```javascript
let criminal;
console.log(criminal);   //결과) undefined
```

null 과 undefined 는 둘 다 값이 없음을 의미하는건 맞는데, \
null은 우리가 없다고, 고의적으로 설정하는 값을 의미하고, \
undefined는 우리가 설정을 하지 않았기 때문에 없는 값을 의미합니다.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://triplexlab.gitbook.io/vanilla-js/basics/02-variables.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
