함수표현식

let sayHello = function(){
    console.log('Hello');
}

sayHello();


함수선언문

function sayHello(){
    console.log('Hello');
}

sayHello();


함수선언문은 어디서든 호출이 가능하다.

sayHello();

function sayHello(){
    console.log('Hello');
}

자바스크립트는 실행 전 초기화 단계에서 코드의 모든 함수를 생성해두기 때문에 코드 위치보다 위에서 호출이 가능하다. 이것을 호이스팅(hoisting)이라고 한다.


화살표함수

let add = function(num1, num2){
    return num1 + num2;
}

위 함수를 화살표함수로 바꾸면

let add = (num1, num2) => {
    return num1 + num2;
}

코드 본문이 한줄이고 return문이 있기 때문에 다음과 같이 return 생략 가능

let add = (num1, num2) => (num1 + num2);

return문이 한줄이라면 괄호 생략 가능

let add = (num1, num2) => num1 + num2;



let sayHello = function(name){
    return `Hello, ${name}`;
}
let sayHello = (name) => {
    return `Hello, ${name}`;
}
let sayHello = (name) => `Hello, ${name}`;

인수가 하나라면 괄호 생략 가능

let sayHello = name => `Hello, ${name}`;


let showError = () => {
    alert('error!')
}

인수가 없는 함수는 괄호 생략 불가능


return문 전에 여러 줄의 코드가 있다면 일반 괄호 사용불가

let add = function(num1, num2){
    const result = num1 + num2;
    return result;
}


예문

        // 함수선언문

const sayHello = function(name){
   const msg = `Hello, ${name}`;
   console.log(msg);
}
sayHello();

        // 화살표함수

let sayHello = (name) =>{
   const msg = `Hello, ${name}`;
   console.log(msg);
}
sayHello();

예문2

        // 함수선언문

const add = function(num1, num2){
    const result = num1 + num2;
    return console.log(result);
}

add(1, 3); // 4

        // 화살표함수

const add2 = (num1, num2) => console.log(num1 + num2);
add2(1, 2); // 3

댓글남기기