질문:
JavaScript 클로저에 대한 토론에서 한 친구가 다음과 같이 주장했습니다. 그들의 구현에는 폐쇄가 부족했고 다른 하나는 그 반대라고 주장했습니다. 클로저 개념을 적용하면 어떤 솔루션이 클로저를 사용하는지 알 수 있나요?
해결책:
클로저 정의: JavaScript에서 클로저는 다음을 의미합니다. 다른 범위에서 참조되는 자유 변수(상위 범위에 정의된 변수)가 있는 함수의 하위 집합입니다. 클로저가 상위 범위 외부에서 참조되면 해당 범위의 upvalue(자유 변수)를 닫습니다.
사례 1: 친구의 프로그램
<code class="js">for (var i = 0; i < 10; i++) { (function f() { var i2 = i; setTimeout(function g() { console.log(i2); }, 1000); })(); }</code>
분석:
사례 2: 프로그램
<code class="js">for (var i = 0; i < 10; i++) { setTimeout((function f(i2) { return function g() { console.log(i2); }; })(i), 1000); }</code>
분석:
결론:
당신과 당신의 친구 모두 구현에서 클로저를 사용하고 있습니다. 차이점은 친구의 프로그램에서는 클로저가 내부 함수 g 내에서 생성되는 반면, 여러분의 프로그램에서는 클로저가 외부 함수 f 내에서 생성된다는 것입니다.
위 내용은 당신의 친구의 JavaScript 코드가 실제로 클로저를 사용하고 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!