var foo = 'outer';
function outer() {
var foo = 'closure';
var bar = 'baz';
return function inner() {
console.log(foo);
}
}
inner()
에 필요하기 때문에 foo
이 폐쇄됨을 이해합니다.Javascript : 모든 변수에 대해 클로저가 작성 되었습니까? 아니면 내부 함수가 사용할 수있는 클로저에 대해서만 클로저가 작성 되었습니까?
bar
도 폐쇄 될 예정입니까? inner()
의 범위에 있지만 inner()
에 의해 사용되고 있지 않습니다.
그냥 부모 범위로 보입니다. "내부 선언문의 범위에있는 모든 변수는 클로저에서 사용할 수 있습니다"(JavaScript Ninja –
@ AdamZerner의 비밀을 인용하여 말합니다. 범위 체인이 있으며 각각에는 상위 범위에 대한 참조가 있습니다. 클로저 범위는 그 안에 정의 된 모든 함수들 사이에서 공유 될 수 있습니다. "* 범위 내의 모든 변수 *"는 현재 범위 변수 및 거기에서 액세스 할 수있는 다른 모든 변수를 나타냅니다. – Bergi