더북(TheBook)

승자를 판단하는 부분과 무승부를 판단하는 부분, 차례를 넘기는 부분이 중복되므로 이 부분을 함수로 빼면 좋습니다.

const checkWinnerAndDraw = (target) => {
  const hasWinner = checkWinner(target);
  if (hasWinner) { // 승자가 있으면
    $result.textContent = `${turn}님이승리!`;
    $table.removeEventListener('click', callback);
    return;
  }
  // 승자가 없으면
  const draw = rows.flat().every((cell) => cell.textContent);
  if (draw) {
    $result.textContent = '무승부';
    return;
  }
  turn = turn === 'X' ? 'O' : 'X';
};
const callback = (event) => {
  (중략)
  event.target.textContent = turn;
  checkWinnerAndDraw(event.target);
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.