IT & Dev.

화살표 함수 구문

시고르빙봉 2023. 10. 20. 00:17
728x90
반응형

화살표 함수는 자바스크립트 환경에서 함수 생성을 좀 더 간결하게 하는 방법이다.

단계적으로 줄여 본다면..

function callName(name) {
  console.log(name);
}
const callName = function(name) {
  console.log(name);
}
const callName = (name) => {
  console.log(name);
}

function(name) 의 구분을 (name) => 로 줄일 수 있다.

좀 더 간결하게 할 수 있는 방법이 있다.

 

매개변수 괄호 생략하기

오직 하나의 매개변수만 사용하는 경우, 묶는 괄호를 생략할 수 있다.

const callName = (name) => {
  console.log(name);
}


const callName = name => {
  console.log(name);
}



함수에 매개변수가 없는 경우에는 괄호를 생략하면 안된다.

const callName = () => {
  console.log("Tom");
}



매개변수가 두 개 이상인 경우
에도 괄호를 생략하면 안된다.

const callPerson = (userName, userAge) => {
  console.log(userName, userAge);
}



함수 본문 중괄호 생략하기

화살표 함수에 반환문 외에 다른 로직이 없는 경우, return 키워드와 중괄호를 생략할 수 있다.

// before
const callName = (name) => {
  return name;
}


// after
const callName = name => name

name => { return name } 라고 쓰지 않고, name => name 으로 사용한다.



객체만 반환하는 경우

자바스크립트 객체를 반환하려고 하면, 다음과 같이 유효하지 않은 코드가 나올 수 있다.

number => ({ age: number }); // 객체를 반환하려고 합니다.

 

자바스크립트는 중괄호를 js객체를 생성하는 코드가 아닌, 함수 본문 래퍼로 취급하기 때문에 이 코드는 유효하지 않다.

객체를 생성하고 반환해야 한다고 자바스크립트에 "말하려면" 코드를 다음과 같이 수정해야 한다.

number => (({ age: number })); // 추가 괄호를 써서 객체를 감싸줍니다.

객체와 중괄호를 추가 괄호로 감싸면, 자바스크립트는 중괄호가 함수 본문을 정의하는 것이 아니라 객체를 생성하기 위한 것으로 이해한다. 따라서 객체가 반환된다.

화살표 함수에서 반환 값이 {}로 시작할 경우, 자바스크립트는 이를 코드 블럭으로 오해할 수 있다. 이를 해결하기 위해 객체 리터럴을 반드시 소괄호 ()로 감싸야 한다.




Ref. https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Functions/Arrow_functions

 

728x90
반응형