스코프
전역스코프
와지역스코프
- 전역스코프는 가장 바깥쪽의 스코프를 의미한다.
- 지역스코프는 전역이 아닌 다른 스코프 전부를 의미한다.
- 지역변수는 전역변수보다 더 높은 우선순위를 갖는다.
let name = '김코딩';
function showName() {
let name = '박해커'; // 지역 변수
console.log(name); // 박해커
}
console.log(name); // 김코딩
showName();
console.log(name); // 김코딩
변수 이름이 전역 변수와 똑같지만,
함수 안에서 선언한 name이라는 지역 변수에 접근하고 있다.
지역 변수가 전역 변수보다 우선순위가 높으므로, 지역 변수 name이 출력된다.
let name = '김코딩';
function showName() {
name = '박해커';
console.log(name); // 박해커
}
console.log(name); // 김코딩
showName();
console.log(name); // 박해커
지역스코프 안에서 전역변수 name이 함수가 실행함에따라 재할당 되기때문에 마지막 출력은 '박해커'가 된다.
클로저 함수
- 함수를 리턴하는 함수
- 내부함수의 스코프에서 바깥함수의 스코프에 선언된 변수에 접근할 수 있다.
let add = function(x) {
let sum = function(y) {
return x + y;
}
return sum;
}
let foo = add(1);
foo(3); //add(1)(3) => 4
let total = foo(6); //add(1)(6) => 7
오늘의 감정
클로저 함수를 처음에 이해할 때 함수를 리턴하는 함수로만 이해했다.
그래서 종합퀴즈에서 정말 많이 틀렸다.
이후 줌 라이브 세션때 많은 동기들도 클로저 함수에 대해 질문을 많이 했다.
교육 엔지니어님은 함수를 리턴하는 함수로 이해하지말고 내부함수에서 외부함수의 변수를 사용할 수 있는 것이라고 설명하셨다.
이렇게 이해하고 복습으로 퀴즈를 다시 풀 때
처음 퀴즈르 풀었을 때 보다 잘 풀려서 다행이라고 생각했다.
페어와 js 문법 과제는 다음주 월요일 마감이기 때문에 다음 블로그에서 등장합니다!