위코드 개강(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문제 풀고 배운 것 저녁에 정리
'프로그래밍' 카테고리의 다른 글
wecode 사전스터디(7/20) 로그 - 1 (노마드코더 리뷰) (0) | 2020.07.20 |
---|---|
wecode 사전스터디 1주차(7/19) 로그 (0) | 2020.07.19 |
wecode 사전스터디 1주차(7/17) 로그 (0) | 2020.07.17 |
wecode 사전스터디 1주차(7/16) 로그 (0) | 2020.07.16 |
wecode 사전스터디 1주차(7/13) 로그 (0) | 2020.07.15 |
댓글