"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > JavaScript 함수 익히기: 일반 함수와 화살표 함수 가이드

JavaScript 함수 익히기: 일반 함수와 화살표 함수 가이드

2024-11-08에 게시됨
검색:301

Mastering JavaScript Functions: Your Guide to Normal vs. Arrow Functions

JavaScript에서 함수는 언어의 기본 구성 요소이므로 개발자가 재사용 가능한 코드 블록을 정의할 수 있습니다. JavaScript의 두 가지 주요 함수 유형은 일반 함수와 화살표 함수입니다. 언뜻 보면 비슷해 보일 수도 있지만 구문, 동작, 사용 사례 측면에서 뚜렷한 차이가 있습니다. 이 문서에서는 이러한 차이를 단계별로 조사하여 일반 기능과 화살표 기능 간의 미묘한 차이를 효과적으로 파악하는 데 도움이 되는 자세한 예를 제공하고 모든 시나리오를 다룰 것입니다.

일반 함수와 화살표 함수: 분할 탐색
통사론
JavaScript의 일반 함수는 function 키워드 뒤에 함수 이름, 매개변수(있는 경우), 중괄호로 묶인 함수 본문을 사용하여 정의됩니다. 예는 다음과 같습니다.

function add(a, b) {
    return a   b;
}

반면에 화살표 함수는 ES6에 도입된 보다 간결한 구문을 제공합니다. 화살표(=>) 표기법을 사용하고 한 줄 함수에 대해서는 function 키워드와 중괄호를 생략합니다. 예를 들어:

const add = (a, b) => a   b;

어휘바인딩
일반 함수와 화살표 함수의 가장 중요한 차이점 중 하나는 this 키워드를 처리하는 방법입니다. 일반 함수에서 this의 값은 함수가 호출되는 방식에 따라 결정됩니다. 반대로 화살표 함수는 자신의 this를 바인딩하지 않고 둘러싸는 범위에서 상속합니다. 예를 들어 이를 설명하겠습니다.

const person = {
    name: 'John',
    sayHello: function() {
        console.log(`Hello, ${this.name}!`);
    }
};

person.sayHello(); // Output: Hello, John!

const personArrow = {
    name: 'Jane',
    sayHello: () => {
        console.log(`Hello, ${this.name}!`);
    }
};

personArrow.sayHello(); // Output: Hello, undefined!

위의 예에서 person.sayHello()는 "Hello, John!"을 올바르게 기록합니다. 이는 사람객체를 참조하기 때문입니다. 그러나 personArrow.sayHello()는 "Hello, undefine!"을 기록합니다. 화살표 함수에는 자체 this바인딩이 없기 때문에 name이 정의되지 않은 전역 범위에서 this값을 상속하게 됩니다.

인수 객체
또 다른 차이점은 인수객체에 있습니다. 일반 함수는 함수에 전달된 모든 인수를 포함하는 배열과 유사한 객체인 인수 객체에 액세스할 수 있습니다. 그러나 화살표 함수에는 자체 인수 개체가 없습니다. 이를 e
로 설명하겠습니다.

xample:

function sum() {
    let total = 0;
    for (let i = 0; i  {
    let total = 0;
    for (let i = 0; i 



위의 예에서 sum()은 인수 개체를 사용하여 전달된 모든 인수의 합계를 올바르게 계산합니다. 그러나 화살표 함수는 인수에 액세스할 수 없기 때문에 sumArrow()는 ReferenceError를 발생시킵니다.

키워드
일반 함수는 new키워드와 함께 생성자 함수로 사용되어 객체의 새 인스턴스를 생성할 수 있습니다. 그러나 화살표 함수는 생성자로 사용할 수 없습니다. new와 함께 화살표 함수를 사용하면 TypeError가 발생합니다. 예는 다음과 같습니다.

function Person(name) {
    this.name = name;
}

const john = new Person('John');
console.log(john.name); // Output: John
const PersonArrow = (name) => {
    this.name = name;
}

const jane = new PersonArrow('Jane'); // TypeError: PersonArrow is not a constructor

FAQ 섹션
Q: 화살표 기능 대신 일반 기능을 사용해야 하는 경우는 언제인가요?
A: this 키워드, 인수 객체에 액세스해야 하거나 생성자 함수를 정의할 때 일반 함수를 사용하세요. 간결한 한 줄로 작성하거나 어휘 범위를 유지하려는 경우 화살표 기능이 선호됩니다.

Q: 화살표 함수에 이름이 있을 수 있나요?
A: 아니요. 화살표 함수에는 이름을 가질 수 없습니다. 기본적으로 익명입니다.

Q: 화살표 기능은 일반 기능보다 빠르나요?
A: 화살표 기능과 일반 기능 간에는 큰 성능 차이가 없습니다. 둘 사이의 선택은 특정 사용 사례와 가독성에 따라 이루어져야 합니다.

Q: 객체 메서드에서 화살표 기능을 사용할 수 있나요?
A: 예, 화살표 함수는 개체 메서드에서 사용할 수 있지만 자체 this를 바인딩하지 않으므로 주의하세요. 이로 인해 예기치 않은 동작이 발생할 수 있습니다.

결론
요약하면 일반 함수와 화살표 함수는 모두 JavaScript에서 함수를 정의하는 목적으로 사용되지만 구문, 동작 및 사용 사례가 다릅니다. 깨끗하고 효율적이며 버그 없는 코드를 작성하려면 이러한 차이점을 이해하는 것이 중요합니다. 이 문서에 설명된 시나리오를 고려하면 JavaScript 프로젝트에서 각 유형의 함수를 언제 사용할지 현명한 결정을 내릴 수 있습니다.

모든 것에 딱 맞는 솔루션은 없다는 점을 기억하세요. 일반 함수와 화살표 함수 사이의 선택은 궁극적으로 코드의 특정 요구 사항과 코딩 스타일 선호도에 따라 달라집니다.

릴리스 선언문 이 기사는 https://dev.to/kafeel_ahmad/mastering-javascript-functions-your-guide-to-normal-vs-arrow-functions-2onk?1에서 복제됩니다.1 침해 사항이 있는 경우, Study_golang@163으로 문의하시기 바랍니다. .com에서 삭제하세요
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3