관리 메뉴

프로그래밍 삽질 중

모던 자바스크립트 핵심 가이드 01 var, let, const 본문

과거 프로그래밍 자료들/Javascript&typescript

모던 자바스크립트 핵심 가이드 01 var, let, const

평부 2022. 5. 11. 23:12

* 모던 자바스크립트 핵심 가이드(저자 알베르토 몬탈레시, 옮김 임지순/권영재) 복습

* 핵심 부분과 필요할 경우 문제도 수정해서 기재할 것

* 문제될 경우 삭제할 것 

 

 

○ var

- var로 변수 선언 시 함수 스코프에 종속됨

- 단, for루프 내에서 var 변수를 선언 시 for문 밖에서도 변수 사용 가능

- 새 값을 재할당 시 블록 바깥에서는 값 변경됨

- 정의되기 전에 접근 가능하나(undefined로 표시) 그 값에는 접근 불가

 

for (var i = 0; i< 5; i++) {
  var program1 = "그것이 알고 싶다 1992~";
}

console.log(program1); //"그것이 알고 싶다 1992~"

function myProgram() {
  var program2 = "무한도전" 
  console.log(program2);
}

console.log(myProgram); //무한도전
console.log(program2); //ReferenceError: program2 is not defined(함수 외부에서 접근 불가)

//값 변경 시
var movieName = "신세계"

if(movieName === "신세계") {
  var movieName = "살인자의 기억법";
  
  console.log(movieName); //"살인자의 기억법"
}

console.log(movieName); //"살인자의 기억법"

 

 

○ let

- let 변수 : 블록 스코프로 종속, 변수가 선언된 블록과 그 하위 블록에서만 사용 가능

- 새 값을 재할당 시 블록 바깥에서는 값 변경되지 않음

- 정의되기 전 접근 불가

 

let movieName = "신세계"

if(movieName === "신세계") {
  let movieName = "살인자의 기억법";
  
  console.log(movieName); //"살인자의 기억법"
}

console.log(movieName); //"신세계"

 

 

○ const 

- const 변수: : 블록 스코프에 종속,

- 재할당을 통해 값 변경 불가, 다시 선언 불가

- 정의되기 전 접근 불가

 

const counrty = "korea";
country = "japan";

//Uncaught TypeError: Assignment to constant variable.

 

 

예외 : const에 객체가 담긴 경우

- 변수 전체를 재할당 하는 것이 아닌 속성 중 하나만 재할당 시 오류 발생하지 않음

 

const koreaArea = {
  name: "서울",
  people: 1000
}

koreaArea.people = 900;
console.log(koreaArea.people); //900