JavaScript에서 함수를 선언하는 두 가지 방법이 있습니다 : 함수 선언 및 함수 표현식.
차이점은 다음과 같습니다.
1). 함수별로 선언 된 메소드로 정의 된 함수의 경우 함수 이름이 필요하지만 함수 표현식의 함수 이름은 선택 사항입니다.
2). 함수에 의해 선언 된 메소드에 의해 정의 된 함수는 함수 선언 전에 호출 될 수 있으며, 함수 표현식의 함수는 선언 후에 만 호출 할 수 있습니다.
3). 함수에 의해 선언 된 방법으로 정의 된 함수는 실제 선언이 아닙니다. 그들은 전 세계적으로 또는 다른 기능으로 표시 될 수 있지만 루프, 조건, 시도/캐치/마침내, 마지막으로 나타날 수는 없습니다.
기능 표현은 어디서나 선언 될 수 있습니다.
다음은 기능을 정의하는 두 가지 방법입니다.
코드 사본은 다음과 같습니다.
// 함수 선언 공식
함수 인사말 () {
Console.log ( "Hello World");
}
// 함수 표현식
var greeting = function () {
Console.log ( "Hello World");
}
흥미로운 자바 스크립트는 다음과 같습니다.
코드 사본은 다음과 같습니다.
function f () {console.log ( '나는 외부!'); }
(기능 () {
if (false) {
// 함수를 반복합니다. f
function f () {console.log ( '나는 내부!'); }
}
에프();
} ());
무엇을 출력합니까? 첫 번째 반응은 "나는 외부에있다"는 것이다. 결과적으로 "I Am Intern"은 Chrome에서 출력입니다. IE11은 직접 오류를보고했으며 Firefox 출력의 낮은 버전 "I Am Apporting"...
Chrome 출력의 결과는 기능 선언 표현식으로 선언 된 기능의 특성을 명확하게 반영합니다. 선언 전에 기능을 호출 할 수 있습니다.
IE 오류는 함수 선언이 조건에 있기 때문에 객체가 누락되었음을 보여줍니다. 이는 함수 선언의 원칙을 위반합니다.
기능 표현 범위 :
함수 표현식에 의해 선언 된 함수가 함수 이름을 갖는 경우, 함수 이름은 함수의 로컬 변수와 동일하며 함수 내부에서만 호출 할 수 있습니다. 예를 들어, 밤나무 :
코드 사본은 다음과 같습니다.
var f = 함수 사실 (x) {
if (x <= 1)
반환 1;
또 다른
반환 x*사실 (x-1);
};
경고 (사실 ()); // 끊임없는 참조 오류 : 사실은 정의되지 않았습니다
FACT ()는 함수 내부에서 호출 될 수 있지만 함수 외부에서 호출 될 때 오류가보고됩니다. 사실은 정의되지 않습니다.
위의 것은이 기사에 관한 모든 것입니다. 나는 당신이 그것을 좋아하기를 바랍니다.