🪁react/react 실습

화살표 함수에서 반환할 JSX 요소가 있다면, return 문과 같은 줄에 배치

하얀성 2024. 1. 3. 09:33
  const tabs = ( // 출력x
      <ul className="tabs">
        {Object.values(TabType).map((tabType) => {
          return
            <li key={tabType}>
              {TabLabel[tabType]}
            </li>
        })}
      </ul>
    );

윗처럼 쓰면 출력이 안되고 아래처럼 적어야 되는걸까?
 
 const tabs = ( // 출력 o
      <ul className="tabs">
        {Object.values(TabType).map((tabType) => {
          return <li key={tabType}>{TabLabel[tabType]}</li>
        })}
      </ul>
    );

 


이 코드에서 문제는 return 문 다음에 오는 <li> 태그가 같은 줄에 있지 않다는 것입니다. JavaScript는 세미콜론을 자동으로 삽입하는 'Automatic Semicolon Insertion' 규칙을 따릅니다. 이 규칙에 따라, JavaScript 엔진은 return 문 다음에 새로운 줄이 시작되면 해당 줄 끝에 세미콜론을 자동으로 삽입합니다. 따라서 첫 번째 코드는 다음과 같이 해석됩니다:

   {Object.values(TabType).map((tabType) => {
  return; // 여기서 함수가 끝나고 아무것도 반환하지 않습니다.
  <li key={tabType}>
    {TabLabel[tabType]}
  </li>
})}

 

즉, <li> 요소가 반환되기 전에 함수가 종료되어 아무것도 반환되지 않는 것이다.