>  기사  >  웹 프론트엔드  >  JavaScript의 익명 함수란 무엇입니까?

JavaScript의 익명 함수란 무엇입니까?

php中世界最好的语言
php中世界最好的语言앞으로
2018-04-28 11:21:324050검색

이 글에서는 JavaScript의 익명 함수가 무엇인지 소개하겠습니다. 이 글을 읽은 후 JavaScript의 익명 함수의 개념과 사용법을 어느 정도 이해할 수 있기를 바랍니다.

JavaScript의 익명 함수란 무엇입니까?

JavaScript에서 익명 함수란 무엇인가요?

프런트엔드 면접에서 면접관들은 기본적으로 익명함수와 클로저함수가 무엇인지 묻습니다.

이 기사에서는 먼저 익명 기능이 무엇인지 설명합니다.

이름에서 알 수 있듯이 익명 함수는 이름이 없는 함수입니다. 일반적으로 우리가 작성하는 함수는 다음과 같습니다.

function do(){
  // 执行代码  
};
// 调用
do();

이러한 작성 방법은 do라는 함수를 정의하고 함수 이름을 통해 호출하는 것입니다.

이름이 없으면 어떨까?

function () {
   // 执行代码   
 };

이렇게 작성하면 컴파일 시 오류가 보고됩니다.

Uncaught SyntaxError: Unexpected token (

왜 그렇죠? 브라우저가 구문 분석을 수행할 때 이 기능을 전혀 실행할 수 없다는 사실이 밝혀졌습니다.

그럼 익명함수는 왜 필요한가요? 프로그래밍 언어에 다른 코딩 방법이 있다면 이 코딩 방법은 확실히 정상적으로 실행될 것입니다. 그렇다면 익명 함수를 실행하려면 어떻게 해야 할까요? 다음 예를 보세요.

var do = function () {  // 执行代码  }do();

이런 함수는 꼭 알아야 합니다. 사실 이런 작성 방법은 익명 함수를 do 변수에 복사한 후, 변수 이름을 통해 함수를 실행하는 것입니다.

(function(){   // 执行代码 
  console.log("打印成功");
})();

위 코드는 무엇을 의미하나요?

먼저 위의 코드를 여러 부분으로 나눌 수 있습니다.

첫 번째 부분은 괄호 안의 익명 함수이고, 두 번째 부분은 괄호가 있는 익명 함수이며, 세 번째 부분은 최종 실행을 위한 괄호가 있습니다.

괄호 안의 익명 함수는 익명 함수를 변수로 취급하여 괄호를 통해 실행한다고 볼 수 있습니다.

(function () {
   // 执行代码 
})();

// 相当于
var do = function() {
   // 执行代码  
};

do();

사실 위의 익명 함수 작성 방법은 여러 곳에서 사용됩니다. 이 유형은 JQuery와 같은 일부 툴킷에서 이 작성 방법을 사용합니다.

// 定义一个全局变量a
var a = 1;

(function() {
  // 在自执行函数中也创建一个变量a
  var a = 2;
   console.log(a);  // 2
})();

console.log(a); // 1

자체 실행 함수에 인쇄된 숫자는 2이고, 자체 실행 함수에 인쇄된 숫자는 1인 것을 볼 수 있습니다.

왜 그럴까요?

프로그램에 Scope라는 이름이 있기 때문에 전역 환경의 범위를 전역 범위, 함수 내의 범위를 함수 범위라고 하며 범위는 계층적이며 내부 범위는 액세스할 수 있습니다. 외부 범위 범위 내의 변수이지만 내부 범위의 변수는 외부 범위에서 액세스할 수 없습니다.

내부 범위의 변수에 접근할 경우 해당 변수를 먼저 검색하고, 찾을 수 없으면 상위 범위에서 검색합니다. 전역 범위를 찾을 때까지. 이러한 레이어별 관계는 체인과 같아서 범위 체인이라고 합니다.

위 코드를 다시 살펴보세요. 자체 실행 함수에서 console.log 함수는 먼저 자체 범위에서 검색하여 a 변수를 찾으므로 a의 값은 2입니다. 전역 환경에서는 로그 함수도 a 변수에 접근하므로 외부 범위에서는 내부 범위에 접근할 수 없으므로 전역 환경에서 접근한 a 변수는 전역 함수 환경에서만 조회할 수 있으므로 a의 값이 출력된다. . 1;

요약: 자체 실행 함수의 장점은 자체 실행 함수의 변수가 다른 환경에 의해 오염되지 않도록 한다는 것입니다.

이 기사는 js tutorial 칼럼에서 가져온 것입니다. 배우신 것을 환영합니다!

위 내용은 JavaScript의 익명 함수란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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