함수 선언문 vs 함수 표현식
- 실행하는 방식, 동작하는 방식 모두 동일
- 호출할 수 있는 타이밍에 차이가 있음
- (참고) 함수 표현식보다 함수 선언문이 더 자유롭게 함수를 사용할 수 있음
function sayHello(){
console.log('안녕하세요');
}
let sayHello = function(){
console.log('안녕하세요');
}
- 함수 선언문 : 어디서든 호출 가능
JS는 위에서부터 아래로 읽으며 코드를 실행하는 '인터프리터 방식'인데, 코드 실행 전 모든 함수선언문을 찾아서 미리 실행해놓기 때문에 함수 선언문으로 만들어진 함수는 어디서든 호출 가능함 (= 호이스팅 (hoisting))
- 함수 표현식 : JS가 함수가 할당된 변수를 읽은 이후에야 함수 실행 가능함.
화살표 함수
let add = function(num1, num2) {
return num1+num2;
}
let add = (num1, num2) => {
return num1+num2;
}
- return문을 ( )로 표현 가능 / {}를 ()로 변경
let add = (num1, num2) => (
num1 + num2;
)
let add = (num1, num2) => num1 + num2;
- 매개변수가 하나라면 (매개변수) 괄호도 생략 가능
let sayHello = (name) => `Hello, ${name}`;
let sayHello = name => `Hello, ${name}`;
let showError = () => {
alert('error!');
}
- reuturn문을 사용한다고 해도, 코드가 두 줄 이상인 경우 ()대신 {}사용
let add = (num1, num2) => {
const result = num1 + num2;
return result;
}