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 |
Tags
- 코딩테스트
- 파일시스템
- reactnavigation
- CSS
- flexbox
- javascript
- OOP
- defaultdict
- db
- 단위테스트
- 가상메모리
- BFS
- 부스트캠프
- 이벤트처리
- 베이직
- sql
- display
- PYTHON
- ReactNative
- database
- parser
- DFS
- Graph
- pandas
- 프로그래밍패러다임
- folium
- SQLD
- 보안솔루션
- 챌린지
- 함수형프로그래밍
Archives
- Today
- Total
DevLog
[JS] 함수 선언문 vs. 함수 표현식 :: 자바스크립트 함수 선언과 화살표 함수(arrow function) 본문
프로그래밍 언어/Javascript | Typescript
[JS] 함수 선언문 vs. 함수 표현식 :: 자바스크립트 함수 선언과 화살표 함수(arrow function)
김만콩 2023. 9. 24. 15:38자바스크립트의 함수 선언 방식에는 크게 두 가지 방법이 있다.
// 함수 선언문
function hello(){
console.log("hello");
}
hello();
함수 선언문은 여타 프로그래밍 언어와 같이 `function func_name(param){ /* code */ }`와 같이 선언되며,
이때 함수 선언문 이전에 함수를 호출해도 에러 없이 작동한다는 특징이 있다.
자바스크립트는 위에서 아래로 코드를 읽어 순차적으로 실행하는 인터프리터 언어지만,
실행 전 초기화 단계에서 소스 코드 내부의 모든 선언문을 찾아서 최상단에 재배치하는 방식으로 작동하기 때문에 실제 함수 사용 가능 범위가 늘어나게 되는데, 이를 호이스팅(hoisting)이라고 한다.
이 때문에 함수 선언문은 코드 내부에서 상대적으로 자유롭게 선언이 가능하다.
// 함수 표현식
const hello = function(){
console.log("hello");
}
반면 익명 함수를 변수에 할당하는 함수 표현식은 실제 코드 작성 위치에 도달해야 함수가 생성되기 때문에,
표현식 이후 범위에서만 호출 및 사용이 가능하다.
// 함수 표현식 with 화살표 함수
const hello = () => console.log("hello");
이때 익명 함수 lambda를 화살표 함수(arrow function)로 간결하게 표현할 수 있다.
화살표 함수는 기존의 `function` 키워드를 생략한 `() => {}`의 형태로 작성하며,
아래의 경우 때에 따라 괄호도 생략이 가능하다.
/* 받아오는 인수가 하나라면 앞의 괄호 () 생략 가능 */
// 인수가 1개
let hello = name => {
const msg = `Hello, I'm ${name}.`;
return msg;
}
// 인수가 2개
let hello = (name, age) => {
const msg = `Hello, I'm ${name}. I'm ${age} years old.`;
return msg;
}
/* 실행 코드가 한 줄이라면 뒤의 괄호 {} 생략 가능 */
let hello = (name, age) => console.log(`Hello, I'm ${name}. I'm ${age} years old.`);
/* return문 한 줄의 경우 return 키워드까지 생략 가능 */
let hello = (name, age) => { return `Hello, I'm ${name}. I'm ${age} years old.` };
let hello = (name, age) => `Hello, I'm ${name}. I'm ${age} years old.`;'프로그래밍 언어 > Javascript | Typescript' 카테고리의 다른 글
| [JS] 자바스크립트 전역 변수, window 객체와 document 객체 (0) | 2023.12.04 |
|---|---|
| [JS] 자바스크립트 반복문 for...in과 for...of (0) | 2023.09.24 |
| [JS] 자바스크립트 타입 변환, Truthy와 Falsy (0) | 2023.09.21 |
| [JS] 배열 메소드(Array Methods) :: slice(), splice()로 배열 자르기, concat()으로 배열 복사하기 (0) | 2023.07.26 |
| [JS] 배열(Array)과 기본 배열 메소드(Array methods) :: push(), pop(), unshift(), shift() (0) | 2023.07.18 |