반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

undefined

변수, 표현식과 문 - Day 02 본문

Javascript

변수, 표현식과 문 - Day 02

JavaScripter 2022. 9. 27. 20:24
반응형

1. 변수란 무엇인가

 

변수는 값을 저장하기 위한 메모리 공간 또는 그 공간을 식별하기 위한 이름을 말한다.

 

선언에 의해서 변수는 정의된다.

 

 

2. 변수의 선언이란

 

변수의 선언이란 변수를 생성하는 것을 뜻하며

 

변수를 생성하는 것은 변수를 위한 메모리 공간의 확보 & 메모리 공간의 주소연결을 위한 준비작업을 뜻한다.

*자바 스크립트에서의 대표적인 변수는 선언 키워드는 var const let 이 존재한다.

 

 

ES5

var = 함수 레벨 스코프

 

ES6

const , let = 블록 레벨 스코프

 

ES6란 ES5의 기능의 호환성을 유지하면서 새로운 기능을 추가한 것이므로 var는 현재에도 작동한다.

 

 

3. 변수 선언 이후에 대하여

 

변수가 선언이 되면 변수를 위한 메모리 공간이 확보되고 정해진 변수명으로 메모리 주소가 연결이 된다.

 

그리고 변수를 위한 메모리 공간은 빈공간이 아닌 undefined로 초기화 되는 작업이 진행된다.

 

해당 작업이 진행 되는 이유는 이전에 선언 되었던 값이 남아 있을 가능성이 있기 때문이다.

 

자바스크립트는 매니지드 언어로써 개발자가 직접 메모리 관리를 할 수 없다.

 

따라서 메모리의 할당과 해제는 전적으로 자바스크립트에 내장된 가비지 콜렉터에 의해 제어된다.

 

언매니지드 언어의 에로는 C언어가 있다.

 

C언어는 메모리 관리를 개발자가 직접 담당해야 하며 개발자의 숙련도에 따라 프로그램의 성능이 크게 갈릴 수 있다.

 

반대로 매니지드 언어의 메모리관리는 평균적인 성능으로 수렴하나 어느정도의 손실은 감수해야한다.

 

선언은 필수적이며 만약 선언을 하지 않은 변수명을 호출했을 경우 ReferenceError가 출력이 된다.

*참조 오류라고 하며 참조란 변수에 해당하는 값을 불러오는 작업을 의미한다.

 

 

4. 변수 호이스팅

 

호이스팅은 자바스크립트 고유의 특징이다.

 

한줄씩 실행되는 싱글 스레드 형식의 자바스크립트에서 코드 위치에 상관없이

 

코드의 제일 위에서 선언되는 것처럼 동작하는 것 호이스팅이라고 한다.

 

변수의 선언은 호이스팅의 좋은 예이다.

 

console.log(one)  // undefined

var one
one = 1

console.log(one)  // 1

 

변수의 선언은 코드가 런타임 되기 전에 먼저 선언되어진다 

 

그래서 위의 예시에서 첫번째의 출력은 참조 오류가 발생하지 않은 것이다.

 

호이스팅이 진행되지 않았다면 출력은 변수의 선언보다 먼저 실행되기에 참조 오류가 떴을 것이다.

 

전체적인 실행 순서

 

var one (변수가 선언됨) => 첫번째 출력 => one에 1 할당 =>  두번째 출력

 

var one = 1 로 대체될 경우에도

 

위의 방식과 동일하게 작동한다.

 

선언 먼저 후에 코드 진행

 

 

5. 값의 할당

 

값은 변수의 선언과 다르게 런타임 시점에 할당 되어진다.

 

재할당이 된다는 것은 쉽게 값을 바꾸는 것이다.

 

하지만 주의해야 할 점은 기존에 변수가 사용하던 메모리 공간을 그대로 사용하지 않는 다는 것이다.

 

예를 들어 undefined의 값에 1을 재할당하면 그 메모리 공간은 동일 한 것이 아니며

 

새로 메모리 공간이 생성되고 그곳에 변수명이라는 주소를 다시 연결해준다.

 

이전의 메모리 공간에 부여된 값들은 가비지 콜렉터에 의해 제어 되므로 자동으로 일정 시점이 지나면 해제된다.

 

 

6. 표현식이란

 

표현식이란 값으로 도출되어 질 수 있는 문을 말한다.

*문이란 (var two = 1 + 1) 하나의 덩어리를 의미한다.

*문(최소실행단위)은 토큰(문법적의미)들로 구성되어 있고 var, two, =, 1 , +, 1 은 전부 토큰이다.

 

1 + 1 말고도 위의 예시처럼 1 + 1로 정의된 two또한 표현식이라 할 수 있다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형
Comments