본문 바로가기
Front-End/JavaScript

[JavaScript] 변수 let, 상수 const, var 차이

by 민바이민 2020. 12. 11.

JavaScript

💻프로그래밍

컴퓨터의 프로그램을 작성하는 일.
일반적으로 프로그램의 작성 방법의 결정, 코딩, 디버깅 등의 작업 모두를 가리킵니다.

변수(Variable)

 변수 란 데이터를 저장할 수 있는 메모리 공간을 의미합니다. 값이 변경될 수 있으며 자바스크립트에서는  let  키워드를사용하여 변수를 선언하고 선언되지 않은 변수를 사용하려고 하거나 접근하려고 하면 오류가 발생합니다.

자바스크립트는 변수 자체가 객체화 되어있다.
나중에 값을 바꿀 수 있다면 다 변수이다.
객체는 자기가 혼자서 뭔가 할 수 있는 것들이다.

let 변수명;         // 변수를 선언
let a;

// 프로그램은 오른쪽부터 읽는다
변수명 = 값;      // 변수의 초기화
a = 10;

console.log(a);

 

let

ECMA Script 6 부터 변수 선언을 위해 만들어진 키워드(기존 변수 생성은 var)

 

var를 쓰지 않는 이유‼️

  • 같은 이름의 변수를 선언할 수 있음
  • 지역변수와 전역변수의 구별이 없음
var num;
num = 10;      
...
var num;
num = 20; 

변수를 만들고 실수로 또 만들었을 때 덮어써지기 때문에 let 과 const 가 나왔다.

 

let num;
num = 10;
...
...
...
let num; // 에러가 뜬다.

Uncaught SyntaxError: Identifier 'str' has already been declared


대신 변수를 선언하지 않고도 선언이 될 수도 있다. 자바스크립트의 고질적 병

num2 = 30;  // 이렇게 써도 변수로 선언이 되버린다.

 

 

use strict

strict mode 사용을 한다는 의미이며, 코드를 엄격한 모드로 사용하게 함. 자바스크립트 첫 줄에 적어주는것을 추천한다.

<script>
	'use strict';
</script>

 

상수(constant)

한 번 선언된 상수는 다시 재정의 할 수 없으며, 값을 재할당 할 수 없습니다.
특이하게 다른 언어들과 달리 자바스크립트는 상수를 많이 사용한다.

const 상수명 = 값;
const num = 100;

 

왜 자바스크립트는 상수를 많이 사용하는가?

a = 10;
a = ["a", "b", "c"];       	  // 배열
a = {"name":"오석민","age":20};      // object


메모리에는 2가지 영역이 있다. 스택(stact), 힙(heep)
stact은 만들어졌다가 사라졌다가 할 수 있는 공간.
heep은 한 번 만들어 놓으면 프로그램이 끝나는 순간까지 계속 유지한다.
stact에서 a의 주소지가 적혀져있고
heep에는 주소지 안에 값이 들어가 있다.
처음에는 10의 주소지를 가리키다가 배열을 가리키는 주소지로 바뀐다. 그러면 10의 주소지는 쓰레기값(garbage)이 되고, 메모리에는 존재하기 때문에 메모리가 소비되는데 메모리 낭비를 하지않게 하기위해 상수를 사용한다. 1 : 1 대치를 하여 메모리 낭비를 줄인다.
참고 사이트
https://developer.mozilla.org/ko/docs/Web/JavaScript

 

JavaScript

JavaScript(JS)는 가벼운 인터프리터 또는 JIT 컴파일 프로그래밍 언어로, 일급 함수를 지원합니다. 웹 페이지의 스크립트 언어로서 제일 유명하지만 Node.js, Apache CouchDB, Adobe Acrobat처럼 많은 비 브라

developer.mozilla.org

 

댓글