-
JavaScript 클로저🍓𝗪𝗲𝗯/𝖩𝖺𝗏𝖺𝖲𝖼𝗋𝗂𝗉𝗍 2021. 7. 9. 13:01
클로저
외부변수를 기억하고 이 외부 변수에 접근할 수 있는 함수
함수안에 변수는 함수가 실행될 때 값이 부여된다.
자바스크립트는 함수 단위로 스코프가 생성된다.
inner 스코프 안에 변수가 없으면, 다음 outer 스코프에서 변수를 찾는다.
자바스크립트는 함수 내부에서 함수 외부에 있는 변수에 접근할 수는 있지만,
함수 외부에 있는 변수는 함수 내부에 접근할 수 없다.
함수와 함수가 접근할 수 있는 스코프가 클로저 관계를 맺는다.
관련문제
function one(n) { function two(val) { return Math.pow(val, n); } return two; } const a = one(2); const b = one(3); const c = one(4); console.log(a(10)); console.log(b(10)); console.log(c(10));
제코베 자바스크립트 35번 문제이다.
변수 a에서 함수 one(2)를 실행하여, val이 undefined인 상태로 one함수 안에 있는 two를 리턴한다.
그래서 변수 a는 two(val)을 가진 상태이다.
console.log(a(10));에서 a(10)을 실행하면, a가 two(val)를 가진 상태이기 때문에, val에 10의 값이 들어가서,
10의 2제곱을 하는 형태가 되고, 100이 출력된다.
one함수가 실행된 다음에도 two함수가 one함수에 대한 스코프를 기억하고, 전역변수도 기억하고 있다.
따라서 one함수의 스코프에 접근할 수 있다.
'🍓𝗪𝗲𝗯 > 𝖩𝖺𝗏𝖺𝖲𝖼𝗋𝗂𝗉𝗍' 카테고리의 다른 글
[제코베/JavaScript] 38번 호준이의 아르바이트 (0) 2021.07.10 JavaScript reduce() (0) 2021.07.09 JavaScript slice(), includes() 시간복잡도 (0) 2021.07.08 JavaScript indexOf(), lastIndexOf(), includes() (0) 2021.07.07 JavaScript 소문자를 대문자로, 대문자를 소문자로 (0) 2021.07.07