1
나는 여러 번 폐쇄에 관해 읽었습니다. here.클로저는 정확히 무엇을 의미합니까?
하지만 폐쇄가 무엇을 의미하는지 정확히 알기가 어렵습니다.
- 변수가 폐쇄 되었습니까?
- 아니면 함수가 클로저입니까?
- 아니면 둘 다 폐쇄라고 할 수 있습니까?
나는 여러 번 폐쇄에 관해 읽었습니다. here.클로저는 정확히 무엇을 의미합니까?
하지만 폐쇄가 무엇을 의미하는지 정확히 알기가 어렵습니다.
클로저는 변수의 컨테이너이므로 다른 범위에서 호출 된 경우에도 함수가 작성된 범위의 변수에 액세스 할 수 있습니다.
예 :
f
함수가 생성
function a() {
// a local variable
var x = 42;
function f() {
// use the local variable
return x;
}
// return the function f
return f;
}
// call a to get the inner function
var fx = a();
// call the inner function from out here
var y = fx();
// now y contains the 42 that was grabbed from the variable x inside the function
, 그것은이 생성 된 범위에서 가변 x
포함 그것 클로저를 갖는다. 함수가 전역 범위에서 호출되면 변수 인 x
에 여전히 액세스 할 수 있습니다.
:
function a() {
// a "closure"
var o = { x: 42 };
function f(closure) {
// use the "closure"
return closure.x;
}
// return the "closure" and the function f
return { f: f, o: o };
}
// call a to get the inner function and the "closure"
var fx = a();
// call the inner function with the "closure"
var y = fx.f(fx.o);
// now y contains the 42 that was grabbed from the variable x in the "closure"
참고 : 폐쇄 어떤 식별자를 포함 첫 번째 예제에서 함수 f
의 클로저에는 함수 인 식별자 f
도 포함되어 있습니다. 이 함수는 식별자 f
이 함수 a
에 국한되어 있지만 어디서나 f
이라는 이름을 사용하여 자신을 호출 할 수 있습니다.
@MikeW 네, 정확히 그렇지만 정확히 거기에서 이해할 수 없었습니다. 클로저가 무엇인지 간단히 말해 주시겠습니까? 변수 또는 함수 또는 둘 다? –
링크 된 질문의 맨 위 대답은 종결의 예입니다. 그게 분명하지 않다면 내가 추가 할 수있는 것을 볼 수 없습니다. –
네, 허용 된 대답에서 변수가 클로저라고도 부르기도하고 클로저라고도하는 함수이기 때문에 혼란 스럽지만 일부 사이트 함수는 클로저라고하지만 클로저는 정확히 무엇입니까? –