>  기사  >  웹 프론트엔드  >  Javascript에 익명 함수가 무엇인지 설명하세요.

Javascript에 익명 함수가 무엇인지 설명하세요.

青灯夜游
青灯夜游앞으로
2018-10-12 15:56:465318검색

이 글은 자바스크립트의 익명 기능이 무엇인지 소개합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

분석:

1. 문자 그대로 이해하면 소위 익명 함수는 이름이 없는 함수입니다(참고, 는 영문 괄호 상태 )

2. 정의 형식:

function (){
    //to add codes that you want to add
}

3. 익명 함수 함수

(1) 및 클로저 함수와 비교할 때 가장 큰 효과는 전역 개체를 오염시키지 않는다는 것입니다. 실행이 완료되면 GC가 자동으로 메모리를 회수합니다. 이것이 클로저 함수와의 본질적인 차이점입니다. 클로저 기능의 주요 특징은 다음과 같습니다:

변수는 메모리에 상주하며 브라우저가 닫힐 때만 해제됩니다.

function f1(){
    var n=999;
    nAdd=function(){n+=1}
    function f2(){
      alert(n);
    }
    return f2;
  }
  var result=f1();
  result(); // 999
  nAdd();
  result(); // 1000

위 코드에서 결과는 실제로 클로저 f2 함수입니다. 두 번 실행했는데, 처음에는 값이 999였고, 두 번째에는 값이 1000이었습니다. 이는 함수 f1의 지역 변수 n이 항상 메모리에 저장되며 f1이 호출된 후에 자동으로 지워지지 않음을 증명합니다.

이게 왜죠? 그 이유는 f1이 f2의 상위 함수이고 f2가 전역 변수에 할당되어 f2가 항상 메모리에 있고 f2의 존재가 f1에 따라 달라지므로 f1은 항상 메모리에 있고 삭제되지 않기 때문입니다. 호출이 완료된 후 가비지 수집 메커니즘(가비지 수집)에 의해 재활용됩니다.

이 코드에서 주목할 만한 또 다른 점은 "nAdd=function(){n+=1}" 줄입니다. 우선 var 키워드는 nAdd 앞에 사용되지 않으므로 nAdd는 지역변수가 아닌 전역변수. 둘째, nAdd의 값은 익명 함수이고, 이

익명 함수 자체도 클로저이기 때문에 nAdd는 함수 외부에서 함수 내부에 지역 변수를 설정할 수 있는 setter와 동일합니다. .

(2) 일반 기능에 비해 프리컴파일을 수행하지 않습니다.

function fuc() {
    fuc1(); //foo被提到了作用域的最前面, 于是这里可以正常调用foo函数
    fuc2(); //这里会报错bar是个undefined
    function fuc1() {alert("foo()") }
    var fuc2 = function () { alert("bar")};
}

Code:

익명 함수의 여러 표현:

모드 1: 함수 리터럴

# 🎜🎜# 먼저 함수를 선언합니다. 개체를 만든 다음 실행합니다.

(function(){ 
// insert code here 
})();

Mode 2: Priority Expression

자바스크립트는 내부에서 외부로 표현식을 실행하기 때문에 선언된 함수를 강제로 실행하기 위해 괄호를 사용합니다.

(function(){ 
// insert code here 
}());

모드 3: Void 연산자(Void Operator)

Void 연산자를 사용하여 단일 피연산자를 실행합니다.

void function(){ 
// insert code here 
}();

요약: 위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다. 더 많은 관련 튜토리얼을 보려면

JavaScript 비디오 튜토리얼을 방문하세요!

관련 권장 사항:

JavaScript 그래픽 튜토리얼

JavaScript 온라인 설명서 # 🎜🎜#

위 내용은 Javascript에 익명 함수가 무엇인지 설명하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제