클로저

승훈·2022년 11월 25일
0

클로저(Closure)

자바스크립트 언어만의 고유 개념은 아님.
외부에 있는 변수가 내부에 있는 함수와 함수 호출한 후에도 종료되지 않고 계속 참조 하는 것.
외부의 변수와 내부의 함수가 끊기지 않고 연결고리가 계속 이어져 있는 것.

[1]: 클로저 코드1 --> 바깥쪽에 있는 함수의 변수를 내부 함수가 참조하는 것

const external = () => {
let number = 65;
let internal = () => {
let char = String.fromCharCode(number);
console.log(char
, number++); // internal 함수 내부에서는 number가 없으므로 상위로 올라가서 number를 찾음
// console.log(number);
};
internal();
};

external(); // A 65
external(); // A 65 ..?
external();

console.log('-----------------------------');

[2]: 클로자 코드2

const external2 = () => {
let number = 65;
let internal = () => {
let char = String.fromCharCode(number);
return `${char
}: ${number++}`; // 함수형 프로그래밍에서는 자꾸 return 해주는 것이 좋음.
};
return internal();
};
console.log(external2()); // A: 65
console.log(external2()); // A: 65
console.log(external2()); // A: 65 ...

console.log('-----------------------------');

[3]: 클로저 코드3

const out = () => {
let number = 65;
let internal = () => {
let char = String.fromCharCode(number);
return `${char
}: ${number++}`; // 함수형 프로그래밍에서는 자꾸 return 해주는 것이 좋음.
};
return internal; // 함수의 실행 결과가 아닌 함수 자체를 반환하면 외부와 연결고리가 계속 남게 된다.
};

const out2 = out();
console.log(out2());
console.log(out2());
console.log(out2());
console.log(out2());

0개의 댓글