ECMAScript 클로저
- 이전 페이지 Function 객체
- 다음 페이지 객체 지향
ECMAScript 가 가장 오해하기 쉬운 점 중 하나는 클로저(clousure)를 지원한다는 점입니다.
클로저는, 계산되지 않는 변수를 포함하는 문법 표현식이며, 즉 함수는 함수 외부에서 정의된 변수를 사용할 수 있습니다.
간단한 클로저 예제
ECMAScript에서 전역 변수를 사용하는 것은 간단한 클로저 예제입니다. 다음 코드를 생각해 보세요:
var sMessage = "hello world"; function sayHelloWorld() { alert(sMessage); } sayHelloWorld();
위의 코드에서 스크립트가 메모리에 로드된 후, 함수 sayHelloWorld()는 변수 sMessage의 값을 계산하지 않습니다. 이 함수는 sMessage의 값을 미래의 사용을 위해 잡기 위해만 사용됩니다. 즉, 인터프레터는 함수 sayHelloWorld()를 호출할 때 sMessage의 값을 확인해야 한다는 것을 알고 있습니다. sMessage는 함수 sayHelloWorld() 호출 시(마지막 줄) 값이 할당되고,
복잡한 클로저 예제
함수 안에서 또 다른 함수를 정의하면 클로저가 더 복잡해집니다. 예를 들어:
var iBaseNum = 10; function addNum(iNum1, iNum2) { function doAdd() { return iNum1 + iNum2 + iBaseNum; } return doAdd(); }
여기서, 함수 addNum()은 함수 doAdd() (클로저)를 포함합니다. 내부 함수는 클로저입니다. 왜냐하면 그것은 외부 함수의 매개변수 iNum1과 iNum2 및 전역 변수 iBaseNum의 값을 가져옵니다. addNum()의 마지막 단계는 doAdd()을 호출하여 두 매개변수와 전역 변수를 더하고, 그들의 합을 반환합니다.
가장 중요한 개념은 doAdd() 함수가 매우 중요한 매개변수를 받지 않으며, 사용하는 값은 실행 환경에서 가져온 것입니다.
보이실 것입니다. 클로저는 ECMAScript에서 매우 강력하고 다용도의 일부로, 복잡한 계산을 수행할 수 있습니다.
ヒント:고급 함수와 같이 사용할 때, 클로저를 주의 깊게 사용해야 합니다. 그들은 매우 복잡해질 수 있습니다.
- 이전 페이지 Function 객체
- 다음 페이지 객체 지향