---
title: "JavaScript 정리 02"
date: "2019-02-01"
tags: ["JavaScript"]
status: archived
verified: false
---

---

## Variable(변수)

* 프로그램에서 필요한 값을 일시적으로 저장하기위해 사용
* JS는 데이터형을 개발자가 지정할 수 없다.
     * **데이터형은 값이 할당될 때 결정이 된다.(동적할당)**
* **전역변수, 지역변수 2가지로 구분**된다.
     * **전역변수는 어디에서는 사용가능(사용 비권장)**
     * **지역변수는 함수안(function-scope)에서만 사용가능**

```javascript
// 1. 전역변수 선언
variableName = "some value";

// 2. 값 할당
variableName = "some value";

// 3. 값 사용 : 출력, 연산, 재할당
```

```javascript
// 1. 지역변수 선언
var variableName;

// 2. 변수명에 값 할당
variableName = "some value"; 

// 3. 값 사용 : 출력, 연산, 재할당
```

```javascript
name="김정운";
name=31; // 문자열을 저장했다가 정수를 저장가능!, 동적할당
```


* **지역변수는 함수 외부에서 사용할 수 없다.(function-scope)**
     * **전역변수는 함수 밖에서도 사용가능**

```javascript
function test() {
     // 지역변수
     var addr = "서울 강남구 어딘가";
     // 전역변수
     addr1 = "서울시 강남구 역삼동";
}

test();

alert(addr); // error 발생, var는 function-scope

alert(addr1);
```

![01](/md/legacy-assets/Web/JS/02/01.webp)

![02](/md/legacy-assets/Web/JS/02/02.webp)


* **var는 중복 선언가능**
     * **선언보다 호출이 먼저있어도 작동**
          * **호이스팅**
               * **변수 및 함수선언이 물리적으로 작성한 코드의 상단으로 끌어 옮기는 것**

```javascript
var foo = 'bar1';
cosole.log(foo); // bar1
if (true) {
  var foo = 'bar2';
  console.log(foo); // bar2
}
console.log(foo); // bar2, 지역변수는  function-scope
```
