글쓰기 이유 :
JS에서 기능을 작성할 때 일반적으로 규칙 기능 FN () {} 형태의 함수를 선언합니다. 우수한 플러그인을 읽을 때 var fn = function () {}과 같은 함수의 생성을 볼 수는 없습니다. 그들 사이의 차이점은 무엇입니까? 오늘, 우리는 캐서롤을 끝까지 부러 뜨리는 정신 으로이 매혹적인 기능 진술에 대해 이야기 할 것입니다.
기능 선언
함수 선언 샘플 코드
코드 사본은 다음과 같습니다.
함수 fn () {
console.log ( 'fn function execution ..');
// 코드 ..
}
이런 식으로, 우리는 fn이라는 기능을 선언합니다. 여기에 생각이 있습니다. 이 기능에서 호출되면 실행될 것이라고 생각하십니까? 아니면 오류 가보고됩니까?
fn (); // 이전에 선언 한 FN 함수를 호출하십시오
코드 사본은 다음과 같습니다.
함수 fn () {
console.log ( 'fn function execution ..');
// 코드 ..
}
콘솔 출력 결과 :
예, 현재 FN 기능을 호출 할 수 있으므로 여기에 이유를 요약하겠습니다.
요약 :
1 : 현재 FN 함수는 변수의 결과이며 기본적으로 전역 컨텍스트에서 변수에 저장됩니다 (창 함수 이름으로 확인할 수 있음).
2 :이 방법은 함수 선언이며 글로벌 컨텍스트 단계를 입력하고 코드 실행 단계를 입력 할 때 이미 사용할 수 있습니다. 추신 : JavaScript는 컨텍스트 환경이 메소드를 입력 할 때마다 (Global → Local)를 초기화합니다.
3 : 변수 객체에 영향을 줄 수 있습니다 (상황에 저장된 변수에만 영향을 미칩니다).
기능 표현
함수 표현식 샘플 코드
코드 사본은 다음과 같습니다.
var fn = function () {
console.log ( 'fn function [expression] 선언 실행 ...')
// 코드 ..
}
그래서 우리는 익명 기능을 선언하고 변수 FN에 대한 참조를 지적합니까?
다시 말하지만,이 표현에 의해 선언 된 기능의 위와 아래에 한 번 호출하여 콘솔의 출력 결과를 확인하십시오.
코드 사본은 다음과 같습니다.
// 콘솔의 출력을 명확하게보기 위해서는 가독성을 높이기 위해 각 호출 전후에 표시를합니다.
console.log ( '통화가 시작되기 전에 ...');
fn ();
Console.log ( '이전 통화 종료 ...');
var fn = function () {
console.log ( 'fn function [expression] 선언 실행 ...')
// 코드 ..
}
Console.log ( '통화가 시작된 후 ...');
fn ();
Console.log ( '통화가 시작된 후 ...');
콘솔 인쇄 결과 :
FN () 함수가 호출 될 때 처음으로 코드가 실행될 때 프롬프트는 다음과 같습니다. FN은 함수가 아니며 (FN은 메소드가 아님) 오류가 발생하면 작업이 종료됩니다.
이는 FN ()가 처음으로 호출 될 때 Var FN 변수가 글로벌 오브젝트의 특성으로 존재하지 않으며 FN이 언급 한 익명 함수 컨텍스트가 초기화되지 않으므로 호출이 실패했습니다.
코드 사본은 다음과 같습니다.
// 이제 이전 통화 로직을 먼저 주석 한 다음 콘솔 출력을보십시오.
// console.log ( '호출이 시작되기 전에 ...');
// fn ();
// console.log ( '이전 호출 종료 ...');
var fn = function () {
console.log ( 'fn function [expression] 선언 실행 ...')
// 코드 ..
}
Console.log ( '통화가 시작된 후 ...');
fn (); // 표현식 후에 호출됩니다
Console.log ( '통화가 시작된 후 ...');
콘솔 인쇄 결과 :
표현 함수를 호출해도 괜찮다는 것을 알 수 있습니다. 이유를 요약하겠습니다.
요약 :
1 : 우선, 변수 자체는 함수로 존재하지 않지만 익명 함수에 대한 참조 (값 유형은 참조에 속하지 않음)
2 : 코드 실행 단계에서 글로벌 컨텍스트를 초기화 할 때 전역 속성으로 존재하지 않으므로 가변 객체의 오염을 유발하지 않습니다.
3 :이 유형의 선언은 일반적으로 플러그인 개발에서 일반적이며 폐쇄에서 콜백 기능을 호출하는 것으로 사용될 수 있습니다.
따라서 함수 fn () {}는 var fn = function () {}과 같지 않으며 필수 차이가 있습니다.