이 글에서는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!