const callback = (event) => {
if (event.target.textContent !== '') { // 빈칸이 아닌가?
console.log('빈칸이 아닙니다.');
return;
}
// 빈칸이면
console.log('빈칸입니다.');
event.target.textContent = turn;
const hasWinner = checkWinner(event.target);
// 승자가 있으면
if (hasWinner) {
$result.textContent = `${turn}님이 승리!`;
$table.removeEventListener('click', callback);
return;
}
// 승자가 없으면
turn = turn === 'X' ? 'O' : 'X';
};
승자가 없는 경우에는 무승부인지 판단합니다. 9칸에 모두 textContent가 들어 있으면 무승부가 됩니다. 모든 칸이 채워져 있는지 판단할 때 draw를 true로 놓은 후, 한 칸이라도 빈칸이 있다면 draw를 false로 바꿉니다.