본문 바로가기
프로그래밍

wecode 사전스터디 1주차(7/18) 로그

by Youngbin Kwon 2020. 7. 18.

위코드 개강(8/17) D-30

 

배운 것/개발한 것

☆ 2주차 과제 mission : javascript에서 var, let, const를 이용해 변수를 선언하고 각각의 차이점을 조사해보세요


1. 선언 방식

  • var은 ES6 이전의 변수 선언 방식
  • 여러 차례 var변수를 선언해도, 계속해서 재사용 가능 -> 코드가 길어질 수록 해당 변수의 선언 위치를 모두 파악하는게 어려워짐
  • ES6에서 let과 const 변수 선언 방식 도입
  • let : 변수 선언 후 재할당이 가능
  • const : 변수의 재선언 및 재할당이 모두 불가능

2. 변수 호이스팅

호이스팅 (hoisting) : var 선언문이나 function 선언문 등을 해당 스코프의 선두로 옮긴 것처럼 동작하는 자바스크립트 속성 (참조)

-> 자바스크립트는 ES6에서 도입된 let, const를 포함하여 모든 선언(var, let, const, function, function*, class)을 호이스팅한다.

 

console.log(name); // undefined
var name = "Yorr";
console.log(name); // Yorr

 

위 코드에서는, var name을 선언하기 이전의 console.log가 undefined 에러를 발생시킴

-> 변수의 선언과 초기화를 스코프의 최상단으로 호이스팅하기 때문에 초기값 undefined 출력

-> 선언과 초기화는 호이스팅됐지만, name="Yorr" 할당은 끌어올리지 않으므로 undefined 에러 발생

 

console.log(foo); // ReferenceError: foo is not defined

let foo; // 변수 선언문에서 초기화 단계가 실행된다.
console.log(foo); // undefined

foo = 1; // 할당문에서 할당 단계가 실행된다.
console.log(foo); // 1

 

하지만, 위 코드에서는, let foo를 선언하기 이전의 console.log가 ReferenceError를 발생시킴

-> let은 선언과 초기화가 별개로 이루어지기 때문에, 호이스팅으로 최상단에서 선언된 let foo가 초기화되지 않음 -> undefined가 아닌 ReferenceError 발생

 

3. 필요성

  • 재할당이 필요한 경우에 한정해 let 을 사용한다. 이때, 변수의 스코프는 최대한 좁게 만든다.
  • 재할당이 필요 없는 상수와 객체에는 const 를 사용한다.

개발할 것

 1) 노마드코더 JS 강의 : 4강까지 배운 것 저녁에 정리

 2) codewars javascript 3문제 풀고 배운 것 저녁에 정리

댓글