let turn = 'O';
    const checkWinner = (target) => { 
      const rowIndex = target.parentNode.rowIndex; // tr의 행 인덱스 
      const cellIndex = target.cellIndex; // td의 열 인덱스 
      let hasWinner = false; // 세 칸이 같은 모양으로 채워졌는가? 
      if ( // 가로줄 검사
        rows[rowIndex][0].textContent === turn && 
        rows[rowIndex][1].textContent === turn && 
        rows[rowIndex][2].textContent === turn
      ) {
        hasWinner = true;
      }
      if ( // 세로줄 검사
        rows[0][cellIndex].textContent === turn && 
        rows[1][cellIndex].textContent === turn && 
        rows[2][cellIndex].textContent === turn
      ) {
        hasWinner = true;
      }
      // 대각선 검사
      if ( 
        rows[0][0].textContent === turn && 
        rows[1][1].textContent === turn && 
        rows[2][2].textContent === turn
      ) {
    
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.