익명 함수에 대한 깊은 이해 (철저판)

9218 단어
간단한 글자로 이해하면 이름이 없는 함수이지만, 그것이 단지 이렇게 간단하다면, 나도 이런 것을 말할 필요가 없다.
익명 함수에 대한 이해 1:
function(){
    console.log(1); 
}
//  

직접 사용할 수 없습니다.
익명 함수에 대한 이해 2:
var a = function(){
    console.log(1);
}
a(); //1

익명 함수는 하나의 변수에 의존할 수 있으며, 이 변수 이름은 이 익명 함수의 이름이다.
var a = function(){
    console.log(1);
}
console.log(typeof a); //function

익명 함수에 대한 이해 3:
window.onload = function(){
    console.log(" ");
}
//  

익명 함수를 귀속 이벤트에 사용할 때, 이 이벤트가 실행될 때, 이 익명 함수도 실행됩니다.
익명 함수에 대한 이해 4:
(function(){
    console.log(" ");
})()
//  

표현식에 익명 함수를 넣고 뒤에 괄호를 넣으면 자동으로 이 함수가 실행됩니다.
익명 함수에 대한 이해 5:
var a = function(){
    console.log(" ");
}();
//  

익명 함수 뒤에 괄호를 넣으면 이 함수를 실행합니다.
익명 함수에 대한 이해 6:
function(){
    console.log(1);
}();
//  

익명 함수는 변수를 첨부해야 합니다.
익명 함수에 대한 이해 7:
var a = {
    fn:function(){
        console.log(1);
    }
}
a.fn(); //1

익명 함수는 변수뿐만 아니라 대상의 속성에도 의존할 수 있다.
익명 함수에 대한 이해 8:
var a = {
    fn:function(){
        console.log(" ");
    }()
} // 

같은 익명 함수를 대상의 속성으로 사용할 때도 호출할 수 있다.
익명 함수에 대한 이해 9:
var a = function(b){
    console.log(b)
}
a(52); //52

익명 함수도 매개 변수를 전달할 수 있다
익명 함수에 대한 이해 10:
(function(a){
    console.log(a);
})(10) //10

표현식 함수에 대해서도 매개 변수를 전달할 수 있다
익명 함수에 대한 이해 11:
var a = function(b){
    console.log(b);
}(10); //10
console.log(a); //undefined

실행된 익명 함수를 되돌려 주지 않고 변수에 값을 부여하면 이 변수의 값은undefined입니다.이 함수는 값을 부여하기 전에 이미 실행되었기 때문에, 이 함수는 반환 값이 없기 때문에, undefined입니다. 만약 반환 값이 있다면, 이 변수의 값은 그 익명 함수의 반환 값입니다.
var a = function(b){
    return b;
}(10);
console.log(a); //10

 
여기에 익명 함수에 대한 설명은 여기까지입니다. 다음은 자신이 실행하는 익명 함수에 대한 문제를 말씀드리겠습니다.
why?왜 아래의 이 코드가 잘못 보고됩니까?
function(){
    console.log(1);
}
//

1. ECAMScript가 규정한 함수의 성명은 반드시 이름이 있어야 하기 때문에 이름이 없으면 우리는 그것을 찾을 방법이 없다. 왜 자행 함수에 대해 왜 이름 뒤에 말하지 않아도 되는지.
2. 이름이 없으면 이 익명 함수를 변수에 값을 부여해야 합니다.
만약 위의 견해에 따라 js가 오류를 보고하는 것도 당연하다면, 우리가 사용하는 아래의 이런 코드는 왜 정상적으로 운행할 수 있습니까?
(function(){
    console.log(1);
})() //1

우리가 이 함수를 작은 괄호에 포함했기 때문에, why?괄호 왜 이렇게 신기해?
ECAMScript의 규정에 따라 함수 성명은 반드시 이름이 있어야 하지만, 우리가 괄호로 확대하면 이 함수는 더 이상 함수 성명이 아니라 함수 표현식이다. 당신은 아래의 코드로 이해할 수 있다.
var a = function(){
    console.log(1);
}(); //1

익명 함수를 변수나 대상 속성에 값을 부여하는 것은 함수 표현식이다. 함수 표현식은 이름을 필요로 하지 않을 수 있기 때문에 우리는 직접 이런 방식을 통해 이 함수를 자동으로 실행할 수 있다.
한마디 더 하다
(function(){
    ....
})()

첫 번째 괄호는 연산자입니다. 이 익명 함수를 되돌려주고 마지막 괄호는 이 함수를 실행합니다.
총괄적으로 말하면 표현식이면 그것을 직접 실행할 수 있고 함수 이름이 필요하지 않으면 우리는 그것을 이렇게 호출할 수 있다.
-function(){
    console.log(1);
}()
+function(){
    console.log(2);
}()
~function(){
    console.log(3);
}()
!function(){
    console.log(4);
}()
&function(){
    console.log(5);
}()
|function(){
    console.log(6);
}()
/function(){
    console.log(7);
}()
/function(){
    console.log(8)
}()
%function(){
    console.log(9)
}()
typeof function(){
    console.log(10)
}()
null==function(){
    console.log(11)
}()
0==function(){
    console.log(12)
}()
0!=function(){
    console.log(13)
}()
0>function(){
    console.log(14)
}()
0<function(){
    console.log(15)
}()
0-function(){
    console.log(16)
}()

좋은 웹페이지 즐겨찾기