JS 기본 튜토리얼: 자바스크립트 익명 함수 배우기
John Resig는 세심한 연구로 우리가 일반적으로 사용하는 익명 함수도 찾아낼 수 있는 꼼꼼하고 사려 깊은 사람임에 틀림이 없습니다. 새로운 것으로. 일반적으로 재귀는 함수가 자신을 호출할 때 발생합니다. 우리는 다음과 같은 함수 호출에 익숙하지 않습니다.
1.함수 소리(n){
2. return n > 0 ? 소리(n-1) + "a" : "hiy"; .alert(yell(4))//결과는 다음과 같습니다: hiyaaaa;
단일 함수에는 문제가 없습니다. 익명 함수를 사용하여 객체 안에 배치하면 어떻게 될까요?
1.var ninja = {
2. 외침: function(n){3. ninja.yell(n-1) + "a" : "안녕하세요." “; 새로운 객체를 생성하고 닌자의 외침 방법을 복사했는데 상황이 다릅니다. 익명 함수가 ninja 내부에 있으므로 이 메서드는 여전히 ninja 개체의 lonely 메서드에 대한 참조입니다. 닌자 객체를 재정의하면 문제가 발생합니다.
01.var ninja = {
02.yell: function(n){
03.return n > 0 ?
06. var samurai = { 외침: ninja.yell }; try {
09.alert(samurai.yell(4);10.} catch(e) 🎜>11.alert("어, 이거 안 좋아! ninja.yell 어디 갔어?" )
12.}
13.//결과는 "어, 이건 아니야." good! ninja.yell은 어디로 갔나요?"
이 문제를 해결하는 방법은 무엇입니까? 소리 지르는 방법을 더 안정적으로 만드는 방법은 무엇입니까? 가장 일반적인 방법은 ninja.yell 방법 내부에 "this"를 사용하여 모든 것을 변경하는 것입니다. ninja 객체의 인스턴스, 즉:
1.var ninja = {
2. function(n){
3. return n > "a" : "안녕하세요"; 🎜>이제 테스트하면 필요한 결과를 얻을 수 있습니다. 물론 이것은 익명 함수의 이름을 지정하는 것입니다. :
01.var ninja = {
04. }
05.};
07.var samurai = { 외침: ninja.yell };
08.var ninja = {};09.alert( (samurai.yell(4))+ " 메서드가 자신을 올바르게 호출합니다." );
익명 함수의 이름을 지정하면 한 단계 더 나아갈 수 있습니다. 일반적인 변수 선언의 경우 다음과 같이 시도해 볼 수도 있습니다.
2. Alert ( (ninja == myNinja) + " 이 함수에는 두 가지 이름이 지정됩니다 - 한 번에!" );
3.}; ninja();
위 함수를 실행합니다. IE에서는 "flase 이 함수의 이름은 두 가지로 지정됩니다 – 한 번에!"이고, FF에서는 "true 이 함수의 이름은 다음과 같습니다. 두 가지를 – 동시에!". 저자는 다음과 같이 지적했습니다. 익명 함수에는 이름을 지정할 수 있지만 함수 자체 내에서만 표시됩니다. 그렇지 않은 것 같습니다. 테스트 결과 IE에서는 보이지 않지만 FF에서는 작성자가 예상한 대로 결과가 나타납니다. 동시에 myNinja를 테스트했는데, IE와 FF에서도 결과가 달랐습니다.
1.alert( typeof myNinja);
2.//FF에서는 "undefinde"입니다.
3.//IE에서는 "function"입니다
익명 함수의 이름 지정은 IE의 FF 외부에서만 볼 수 있고 함수 내부에서만 볼 수 있습니다. 실제로 다음과 같이 인수.callee를 사용하여 필요한 결과를 얻을 수 있습니다.
1.var ninja = {
2. 외침: function(n){
3. ";
4. }
5.};
6.alert ( ninja.yell(4));
Arguments.callee는 모든 함수에 사용할 수 있으며 함수 자체에 액세스할 수 있는 안정적인 방법을 제공합니다. 나는 이 방법이 비교적 간단하고 신뢰할 수 있다고 생각한다.
요약하자면 이 모든 방법은 복잡한 코드 구조를 처리하는 데 큰 도움이 될 것입니다. 사용을 선택하면 코드 구조가 더 간결하고 명확해지며 이는 작성자의 원래 의도일 수 있습니다.
위 내용은 JS 기본 튜토리얼입니다: 자바스크립트 익명함수 내용 학습 더 많은 관련 글은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!