Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 비동기 요청 처리
- dom
- 리액트 기초
- 웹개발
- 웹 성능
- #프론트엔드개발
- React
- css
- 웹 개발
- 코드리뷰
- 컴포넌트
- 국제화(i18n)
- 패키지 스크립트
- 퍼포먼스 최적화
- 자바스크립트공부
- 프론트엔드
- Node.js
- fe
- tanStack Query
- 프라미스체이닝
- Promise
- jsx
- 상태 관리 라이브러리
- 풀스택 개발
- html
- 비동기프로그래밍
- JavaScript
- 자바스크립트
- 웹 성능 최적화
- 동적 웹 페이지
Archives
- Today
- Total
sodol-dotcom
JavaScript에서 함수 선언과 export default 방식의 차이 본문
두 방식 모두 기능적으로 동일하지만, 사용할 때 약간의 차이가 있으므로 상황에 따라 적절히 선택하는 것이 좋다.
1. `export default function multiply(a, b) {...}` (함수 선언과 동시에 내보내기)
유의할 점:
- 함수 이름: 이 방식으로 내보내면 함수 이름이 명시적으로 필요하지 않은 상황에서 유용하다. 함수가 주로 기본 내보내기 용도로만 사용되고, 이름 자체는 파일 내부에서만 의미가 있을 때 적합하다.
- Hoisting(호이스팅): 함수 선언과 동시에 내보내는 방식은 함수가 호이스팅되기 때문에 파일 내에서 함수를 호출할 때, 선언된 위치와 상관없이 사용할 수 있다.
console.log(multiply(2, 3)); // 정상 작동
export default function multiply(a, b) { return a * b; }
유의할 점 요약:
- 함수를 호이스팅하여 사용할 수 있다.
- 함수 이름은 외부 모듈에서 사용할 떄 크게 중요하지 않다.
2. `function multiply(a, b) {...} export default multiply;`(함수 선언 후 내보내기)
유의할 점:
- 함수 이름: 이 방식은 먼저 함수를 선언하고, 나중에 내보내기 때문에 파일 내에서 함수 이름이 의미가 있는 경우에 적합하다. 예를 들어, 같은 파일 내에서 함수 이름으로 해당 함수를 참조하고자 할 때 유리하다.
function multiply(a, b) {
return a * b;
}
// multiply를 다른 곳에서도 사용 가능
const square = (x) => multiply(x, x);
export default multiply;
- Hoisting(호이스팅): 이 방식도 함수 선언은 호이스팅되지만, 내보내기(export default)는 나중에 처리되므로 내보내기 전에 파일 내부에서 함수 참조가 가능하다.
유의할 점 요약:
- 파일 내에서 함수를 참조할 때 유리함.
- 내보내기 전에 함수 이름으로 다른 작업을 할 수 있음.
3. 결론: 유의할 점 비교
- 함수 이름이 외부에서 중요하지 않다면, 첫 번째 방식(함수 선언과 동시에 내보내기)을 사용하는 것이 깔끔하다.
- 파일 내부에서 함수 이름을 참조하거나 다른 작업이 필요한 경우, 두 번째 방식(함수 선언 후 내보내기)이 더 유연하다.
어떤 방식을 선택할지 상황에 따라 달라지지만, 기능적으로는 큰 차이가 없기 때문에 코드 가독성과 유연성을 고려해 선택하면 된다.
'Fundamentals > JavaScript' 카테고리의 다른 글
toLocaleDateString() (2) | 2024.11.05 |
---|---|
자바스크립트가 HTML 태그를 직접 리턴할 수 없는 이유 (0) | 2024.10.04 |
JavaScript에서 함수 export 방식 비교: export, export default, export {} 차이 (0) | 2024.10.02 |
객체 구조 분해 할당 (Destructuring Assignment) (0) | 2024.10.01 |
Node.js와 패키지 스크립트 (1) | 2024.10.01 |