지금까지 함수를 선언할 때 아래와 같은 방식으로 선언했었습니다.
function sayHi(){ console.log("hi!"); }
이 방식을 함수 선언(Function Declaration)이라고 합니다.
첫번째 방식과는 다르게 아래와 같이 함수를 선언할 수도 있습니다.
var sayHello = function(){ console.log("hello!"); }
변수에 함수를 담는 모양이 되었는데, 이 방식을 함수 표현(Function Expression)이라고 합니다.
함수 선언으로 생성된 함수든, 함수 표현으로 생성된 함수든, 함수의 호출 방법은 같습니다. 둘의 차이점은 브라우저가 코드를 받아드리는 방식에 차이인데, 아래 코드를 복사해서 실행해봅시다.
sayHiDeclaration(); function sayHiDeclaration(){ console.log("hi! from Declaration"); }
함수 선언전에 함수를 먼저 호출했으므로 실행이 안될 것 같지만, 실행이 됩니다! 이는 코드 해석기가 함수 선언부를 찾아서 먼저 적용한다음 나머지 코드들을 실 행시키기 때문입니다.
반면에 함수 표현은 반드시 함수 호출 전에 이루어져야 합니다.
sayHelloExpression(); var sayHello2 = function(){ console.log("helloi from Expression"); }
위 코드를 실행하면 sayHelloExpression 함수를 찾을 수 없다는 에러가 납니다.
댓글
이 글에 댓글을 다시려면 SNS 계정으로 로그인하세요. 자세히 알아보기