js arrow vs function()

Posted by : on

Category : myconfused   javaScript


일반 함수 (Function Declaration)

전통적인 방식의 함수 선언. this 키워드가 함수가 호출된 객체를 가리킴.

function sayHello(name) {
return `Hello, ${name}!`;
}

console.log(sayHello('Alice')); // Hello, Alice!

화살표 함수 (Arrow Function)

더 간결한 문법. this 키워드가 상위 스코프(lexical scope)를 가리킴.

const sayHello = (name) => `Hello, ${name}!`;

console.log(sayHello('Bob')); // Hello, Bob!

주요 차이점

문법의 간결함:

  • 일반 함수는 function 키워드를 사용하고, 화살표 함수는 =>를 사용
  • 화살표 함수는 중괄호 {}와 return 키워드 생략이 가능

this 바인딩:

  • 일반 함수는 호출된 객체에 따라 this가 동적으로 바인딩.
  • 화살표 함수는 this가 정의된 위치의 상위 스코프를 따르므로, this가 변하지 않음.
const person = {
        name: 'Carol',
        regularFunction: function() {
        console.log(this.name); // this는 person 객체를 가리킴
    },
    arrowFunction: () => {
        console.log(this.name); // this는 상위 스코프를 가리킴, 여기서는 전역 객체
    }
};

person.regularFunction(); // Carol
person.arrowFunction();   // undefined (전역 객체에 name이 없기 때문)

이렇게 일반 함수와 화살표 함수는 문법의 간결함과 this 바인딩 방식에서 차이가 있어요


About 유재석
유재석

개발자 유재석 입니다. Web Developer.

Email : jaeseok9405@gmail.com

Website : https://github.com/yoo94