함수 선언문과 함수 표현식 본문
자바스크립트에서 함수를 작성하는 2가지 방법(함수 선언문과 함수 표현식)이 있습니다.
- 함수 선언문 : function
a () {};
- 함수 표현식 : var a = function() {};
이 2가지 방법에서 가장 큰 차이점은 호이스팅에서 나옵니다.
함수 선언문으로 작성한 함수는 함수 전체가 호이스팅 되지만, 함수 표현식으로 작성한 함수는 호이스팅이 되지 않습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | console.log(sum(3,4)); // 7 출력, 호이스팅 가능 function sum(x, y) { return x+y; } console.log(sum(1,2)); // 3 출력 console.log(a(3,4)); // Uncaught TypeError: a is not a function, 호이스팅 불가능 var a = function (x,y) { return x*y; } console.log(a(1,2)); // 2 출력 | cs |
코드가 방대해질수록 함수명이 중복되어 선언되는 경우가 생길 수 있는데, 만약 함수 선언문으로 중복 작성하게 되면 이전에 선언되었던 함수 로직 대신 중복 선언된 새로운 로직이 일괄 적용 됩니다.
반면 함수 표현식을 사용한다면 선언 이후에 내용에만 새로운 로직이 적용이 되기 때문에 보다 안전한 사용이 가능하게 됩니다.
물론 함수명을 중복하게 사용하지 않는것이 가장 중요하겠지요?
'Javascript' 카테고리의 다른 글
호이스팅 정리 (0) | 2020.09.24 |
---|---|
자바스크립트 콜백 함수 (0) | 2020.09.21 |
Node.js와 DB 연동하기 (0) | 2020.09.18 |
이미지맵 좌표 유동적으로 적용하기 (1) | 2020.09.17 |
Javascript로 Post Submit 하기 (0) | 2020.07.16 |
Comments