두 문법의 차이가 무엇일까요?

익명 함수에서 식이 하나고 중괄호가 없으면 return이 있는 거랑 똑같습니다.

const f1 = arg => { return ret; };
const f2 = arg => ret;

위에서 f1f2는 같은 함수입니다.

const f3 = arg => { ret; }

f3는 반환값이 없으므로 void 리턴 함수가 됩니다. Array.ptototype.filter함수에 콜백 함수 리턴 값이 undefined 함수면 무조건 false로 처리해서 빈 배열이 나오는 것이겠지요.

참고로 함수 매개변수도 하나라면 괄호를 생략할 수 있고, 오브젝트 리터럴을 반환값으로 쓰려면 중괄호를 괄호로 묶어줘야 return 키워드를 생략할 수 있습니다. 안 그러면 문법 오류 납니다.

const f4 = arg => {
  return { x: 3 };
};
const f4 = arg => ({ x: 3 });
2개의 좋아요