[Javascipt] 변수 선언 방식 (var, let, const)

2022. 5. 12. 22:10· FE/Javascript
목차
  1. 요점
반응형

안녕하세요.

 

이번 포스팅에서는 Javascript의 변수 선언 방식인 var, let, const에 대해서 알아보겠습니다.

 


1. var

  • 기존에 사용하던 변수 선언 방식
  • 같은 이름으로 변수를 다시 선언할 수 있음(수정도 가능하다.)
    • 간단한 소스에서는 편리하지만, 복잡한 코드에서는 유지보수가 힘들어질 가능성이 높음
  • Scope
    • 전역 변수로 선언된 경우 : 모든 곳에서 사용할 수 있음
    • 함수 내에서 선언된 경우 : 함수 내에서만 사용됨
  • 변수 선언 전에도 사용 가능
// ======= 같은 이름으로 변수를 다시 선언 및 수정 가능 =========
var name = "멍목";
var name = "김멍목";        // 정상 작동
// ============================================================


// ======= 전역 변수로 선언된 경우 모든 곳에서 사용 가능 ======= 
var myName = "마이네임";
console.log(myName);        // output : 마이네임
sayMyName();                // output : 마이네임

function sayMyName(){
	console.log(myName);
}
// ============================================================


// ================ 변수 선언 전에도 사용 가능 ================
console.log(year);		// output : undefined
var year = 2022;		
console.log(year);		// output : 2022
// ============================================================

 

2. let

  • var 변수를 개선한 Javascript 변수 선언 방식으로, ES6 버전에서 추가됨
  • 같은 이름으로 변수를 다시 선언할 수 없음(영향을 받지 않는 서로 다른 함수 내에서는 가능)
  • 변수 수정 가능
  • Scope
    • 전역 변수로 선언된 경우 : 모든 곳에서 사용할 수 있음
    • 함수 내에서 선언된 경우 : 함수 내에서만 사용됨
  • 변수 선언 전에는 사용 불가능
// =========== 같은 이름으로 변수를 재선언 불가능 =============
let name = "멍목";
let name = "김멍목";	     // SyntaxError: Identifier 'name' has already been declared
// ============================================================


// ====================== 변수 수정 가능 ======================
let language = "Javascript";         
console.log(language);            // output : Javascript
language = "JS";
console.log(language);            // output : JS
// ============================================================

// ======= 전역 변수로 선언된 경우 모든 곳에서 사용 가능 ======= 
let myName = "마이네임";
console.log(myName);        // output : 마이네임
sayMyName();                // output : 마이네임

function sayMyName(){
	console.log(myName);
}
// ============================================================


// ================ 변수 선언 전에는 사용 불가능 ================
console.log(year);		// ReferenceError: Cannot access 'year' before initialization
let year = 2022;		
// ============================================================

 

3. const

  • ES6 버전에서 추가된 Javascript 변수 선언 방식
  • 변수를 선언한 이후, 객체 자체를 수정이 불가능함(객체가 아닌, 객체의 값은 수정 가능)
  • Scope
    • 전역 변수로 선언된 경우 : 모든 곳에서 사용할 수 있음
    • 함수 내에서 선언된 경우 : 함수 내에서만 사용됨
  • 변수 선언 전에는 사용 불가능
// =========== 같은 이름으로 변수를 재선언 불가능 ==============
const name = "멍목";
const name = "김멍목";	     // SyntaxError: Identifier 'name' has already been declared
// ============================================================


// ===================== 변수 수정 불가능 =====================
let language = "Javascript";         
console.log(language);            
language = "JS";                  // TypeError: Assignment to constant variable.
// ============================================================


// ==== 변수를 재선언하는 것이 아닌, 값을 수정하는 건 가능 =====
const info={
        name:"홍길동",
        age:50
    }

console.log(info)           // output : { name: '홍길동', age: 50 }
info.age=40;
console.log(info);          // output : { name: '홍길동', age: 40 }
// ============================================================


// ======= 전역 변수로 선언된 경우 모든 곳에서 사용 가능 ======= 
const myName = "마이네임";
console.log(myName);        // output : 마이네임
sayMyName();                // output : 마이네임

function sayMyName(){
	console.log(myName);
}
// ============================================================


// ================ 변수 선언 전에는 사용 불가능 ================
console.log(year);		// ReferenceError: Cannot access 'year' before initialization
const year = 2022;		
// ============================================================

 

요점

  var let const
재선언 가능 여부 O X X
객체 수정 여부 O O X
객체 값 수정 여부 O O O
선언 전 사용 여부 O X X

ES6 이상의 JavaScript를 사용한다면, var 방식보다는 let, const 방식을 주로 사용하는 것이 효과적이다.

(var 방식은 재선언이 가능하기 때문에 복잡한 코드일수록 유지보수가 어려워질 수 있기 때문)

평소엔 const 방식을 사용하다가 객체의 재할당이 필요한 경우 let 방식을 사용하면 좋을 듯 하다.

 

 

 

참고 링크

https://velog.io/@bathingape/JavaScript-var-let-const-차이점

https://velog.io/@haleyjun/JavaScript-var-let-const-차이점

 

반응형

'FE > Javascript' 카테고리의 다른 글

[FE 날개달기] DOM, BOM, Load js, this  (0) 2023.06.04
[Javascript] CRLF 치환하기(textarea 개행 시, 주의사항)  (0) 2022.05.18
[Javascript] A window.confirm() dialog generated by this page was suppressed because this page is not the active tab of the front window 해결방법  (0) 2021.10.26
[Javascript] element 요소가 있는 지 확인  (0) 2021.07.06
[Javascript] Select Option Value속성 말고 다른 속성 사용하기  (0) 2021.06.19
  1. 요점
'FE/Javascript' 카테고리의 다른 글
  • [FE 날개달기] DOM, BOM, Load js, this
  • [Javascript] CRLF 치환하기(textarea 개행 시, 주의사항)
  • [Javascript] A window.confirm() dialog generated by this page was suppressed because this page is not the active tab of the front window 해결방법
  • [Javascript] element 요소가 있는 지 확인
멍목
멍목
개발 관련 새롭게 알게 된 지식이나 좋은 정보들을 메모하는 공간입니다.
반응형
멍목
김멍목의 개발블로그
멍목
전체
오늘
어제
  • 분류 전체보기 (514)
    • BE (190)
      • Spring (21)
      • Java (141)
      • Kotlin (6)
      • JPA (22)
    • FE (33)
      • Javascript (16)
      • Typescript (0)
      • React (5)
      • Vue.js (9)
      • JSP & JSTL (3)
    • DB (32)
      • Oracle (22)
      • MongoDB (10)
    • Algorithm (195)
    • Linux (8)
    • Git (6)
    • etc (42)
    • ---------------------------.. (0)
    • 회계 (4)
      • 전산회계 2급 (4)
    • 잡동사니 (2)

블로그 메뉴

  • 홈
  • 관리

공지사항

인기 글

태그

  • 코테 공부
  • JPA
  • 프로젝트로 배우는 Vue.js 3
  • 더 자바 Java 8
  • 더 자바 애플리케이션을 테스트하는 다양한 방법
  • 자바 개발자를 위한 코틀린 입문
  • Effective Java
  • vue3 공부
  • MongoDB 공부
  • 자기 개발
  • MongoDB with Node.js
  • 이펙티브자바
  • junit5
  • 전산회계 2급 준비
  • 자바 테스팅 프레임워크
  • JPA 공부
  • 알고리즘 공부
  • 자기 공부
  • 이펙티브 자바
  • 코틀린
  • java 8
  • MongoDB 기초부터 실무까지
  • 자기개발
  • 자바공부
  • 자바 공부
  • 코테공부
  • Java to Kotlin
  • 자기공부
  • 알고리즘공부
  • Oracle

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.0
멍목
[Javascipt] 변수 선언 방식 (var, let, const)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.