저는 수년 동안 JavaScript를 사용해 왔으며 수많은 함수를 작성해 왔습니다. 그러나 오늘 저는 두 함수 정의의 차이점을 정말로 이해하게 되었습니다. 계속하기에는 너무 늙었습니다.
보통 함수를 정의하는 방법은 다음 두 가지로 볼 수 있습니다.
//표현식 정의
var fnx=function(str)
{
console.log(str ' from fnx');
};
두 메소드 모두 새로운 함수 개체를 생성하지만 함수 선언문의 함수 이름은 변수 이름이고 변수는 var를 통해 변수를 선언하는 것처럼 함수 정의문의 함수가 명시적으로 고급화됩니다. 스크립트 전체와 함수 내에서 볼 수 있지만 var 표현식을 사용하여 함수를 정의하면 변수 선언만 앞으로 가져오고 변수 초기화 코드는 여전히 원래 위치에 있습니다. function 문으로 생성된 함수 앞에는 함수 이름과 함수 본문이 추가되므로 선언하기 전에 사용할 수 있습니다.
코드 예시는 다음과 같습니다.
console.log(typeof(fnx)) // 정의되지 않음
if(fnx)
fnx('abc'); // 실행되지 않습니다
else
console.log('fnx는 정의되지 않았습니다') // fnx는 정의되지 않았습니다.
// 함수문
function fn(str)
{
console.log(str);
};
// 표현식 정의
var fnx=function(str)
{
console.log(str ' from fnx');
};