학습 목표
- JavaScript의 주요 개념인 아래의 내용에 대해 설명할 수 있다.
- JavaScript의 타입
- 변수 선언 키워드 let과 const
- 화살표 함수
- 스코프
- 배열
- 객체
- spread
- 구조분해할당
숫자 + '문자열' = '문자열'
숫자 - '문자열' = 숫자
숫자 + 불리언 = 숫자
'문자열' + 불리언 = '문자열'
lexical scope와 closure
it('lexical scope와 closure에 대해 다시 확인합니다.', function () {
let age = 27;
let name = 'jin';
let height = 179;
function outerFn() {
let age = 24; // 지역 변수
name = 'jimin'; // 재할당
let height = 178; // 지역 변수
// 지역 변수는 전역 변수와 별개
function innerFn() {
age = 26;
let name = 'suga';
return height; // 상위 값인 178을 참조
}
innerFn();
expect(age).to.equal(26);
expect(name).to.equal('jimin');
return innerFn; // outerFn 함수를 실행하면 반환값은 innerFn 함수
} // innerFn 함수는 height 반환
const innerFn = outerFn();
expect(age).to.equal(27);
expect(name).to.equal('jimin');
expect(innerFn()).to.equal(178);
});
답은 이미 있고, 왜 그것이 답인가를 생각하는게 쉬울 줄 알았는데 오히려 더 어려웠다. 아직 정리되지 않은 개념들을 다시 훑어보면서 했는데, 클로저 개념이 헷갈려서 고전했다. 그래도 페어분이 잘 설명해주시고, 자료 찾아가면서 하니까 금방 다 풀고, 이해하긴 했는데, 나중에 다른 문제들도 찾아보면서 해봐야겠다.