이 글은 자바스크립트의 익명 기능이 무엇인지 소개합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
분석:
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에 익명 함수가 무엇인지 설명하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!