본문 바로가기
언어

Arrow functions, the basics (JavaScript)

by adawn 2025. 3. 14.

 

화살표 함수, 기초

함수를 만드는 또 다른 아주 간단하고 간결한 문법이 있으며 , 이는 종종 함수 표현식보다 더 나은 선택이 됨.

 

이 문법은 화살표 함수(arrow functions)라고 불리며 , 다음과 같이 생겼음 :

 

let func = (arg1, arg2, ..., argN) => expression;

 

이 코드는 인수 arg1 , arg2 , ... , argN을 받아 오른쪽에 있는 표현식을 평가하고 그 결과를 반환하는 함수 func를 생성함.

 

즉 아래와 같이 작성하는 것의 짧은 버전임 : 

 

let func = function(arg1, arg2, ..., argN) {
  return expression;
};

 

예제:

 

let sum = (a, b) => a + b;

/* 위 화살표 함수는 다음 코드의 간결한 형태입니다:

let sum = function(a, b) {
  return a + b;
};
*/

alert( sum(1, 2) ); // 3

 

위 예제에서 (a,b) => a + b는 두 개의 인수 a와 b를 받아 , 실행 시 a+b를 평가하고 그 결과를 반환하는 함수를 의미함.

인수가 하나뿐이라면 , 매개변수를 둘러싼 괄호를 생략할 수 있어 더욱 짧게 쓸 수 있음.

 

예 :

 

let double = n => n * 2;
// 이는 대략 다음과 같습니다: let double = function(n) { return n * 2 };

alert( double(3) ); // 6

 

인수가 전혀 없을 경우에는 괄호는 빈 상태여야 하지만 반드시 존재해야 함 : 

 

let sayHi = () => alert("Hello!");

sayHi();

 

 

화살표 함수는 함수 표현식과 동일한 방식으로 사용할 수 있음

예를 들어 동적으로 함수를 생성할 때 다음과 같이 사용 가능 :

 

let age = prompt("What is your age?", 18);

let welcome = (age < 18) ?
  () => alert('Hello!') :
  () => alert("Greetings!");

welcome();

 

처음에는 화살표 함수가 생소하고 읽기 어렵게 느껴질 수 있지만 , 익숙해지면 구조를 빠르게 파악할 수 있음.

화살표 함수는 특히 한 줄로 작성할 수 있는 간단한 동작이나 콜백에 매우 편리함. 

 

여러 줄의 화살표 함수 

지금까지 본 화살표 함수는 매우 간단한 형태로 , 인수를 받아 오른쪽의 표현식을 평가하고 반환했음.

 

때때로 여러 줄에 걸친 표현식과 문장이 필요한 경우가 있음.

 이 경우 중괄호를 사용하여 여러 문장을 작성할 수 있음.

 

주요 차이점은 , 중괄호를 사용하면 값을 반환하기 위해 명시적으로 return을 작성해야 한다는 것임(일반 함수와 동일하게)

 

예를 들어 : 

 

let sum = (a, b) => {  // 중괄호가 열리면 여러 줄의 함수가 시작됨
  let result = a + b;
  return result; // 중괄호를 사용하면 명시적인 "return"이 필요함
};

alert( sum(1, 2) ); // 3

 

중괄호를 넣으면 마지막에 return을 이용하여 값을 꼭 반환해주어야 함.

 

앞으로 더 배울 내용

여기서는 화살표 함수의 간결함에 대해 설명했고 이것이 전부가 아님

화살표 함수는 다른 흥미로운 기능들을 가지고 있음.

이를 깊이 있게 공부하려면 자바스크립트의 다른 측면들을 먼저 알아야 하므로 , 이후 "Arrow functions revisited" 챕터에서 다시 다루게 될것임.

현재로서는 한 줄 짜리 동작이나 콜백에 화살표 함수를 사용할 수 있음을 알아두면 됨.

 

과제

1.아래의 코드의 함수 표현식을 화살표 함수로 변경 : 

 

function ask(question, yes, no) {
  if (confirm(question)) yes();
  else no();
}

ask(
  "Do you agree?",
  function() { alert("You agreed."); },
  function() { alert("You canceled the execution."); }
);

 

 

 

짠 코드

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>test</title>
</head>
<body>
    <script>

    function ask(question, yes, no) {
    if (confirm(question)) yes();
    else no();
    }

    ask(
    "Do you agree?",
    () =>  alert("You agreed.") ,
    () =>  alert("You canceled the execution.") 
    );




    </script>
</body>
</html>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'언어' 카테고리의 다른 글

Debugging in the browser (JavaScript)  (0) 2025.03.15
JavaScript specials (JavaScript)  (0) 2025.03.15
Function expressions (JavaScript)  (0) 2025.03.14
Functions (JavaScript)  (0) 2025.03.14
The "switch" statement (JavaScript)  (0) 2025.03.14