Ανάλυση εναλλαγής X και O

Σε αυτό το μάθημα θέλω να σας δείξω πώς να κάνετε την εναλλαγή X και O σε μία γραμμή κώδικα. Πιθανότατα, έχετε κάνει κάτι τέτοιο:

javascriptfunction start(cells) {
  let i = 0; // αρχική τιμή μετρητή
  
  for (let cell of cells) {
    cell.addEventListener('click', function() {
      if (i % 2 == 0) {
        this.textContent = 'X';
      } else {
        this.textContent = '0';
      }
      
      i++; // αυξάνουμε τον μετρητή
    });
  }
}

Θα σας προτείνω να λύσετε το πρόβλημα πιο σύντομα. Ας φτιάξουμε έναν πίνακα με τους 'παίκτες' μας:

javascriptlet gamers = ['X', 'O'];

Όπως βλέπετε, σε αυτόν τον πίνακα το X έχει κλειδί 0, και το O - κλειδί 1. Το ίδιο μπορεί να ειπωθεί και για το i % 2 - για το X το υπόλοιπο θα είναι 0, και για το O - 1.

Δηλαδή αυτό μπορεί να χρησιμοποιηθεί αντί για κλειδί:

javascriptlet gamers = ['X', 'O'];
let key = i % 2;

console.log(gamers[key]);

Ή ακόμα πιο σύντομα:

javascriptlet gamers = ['X', 'O'];
console.log(gamers[i % 2]);

Ή ακόμα πιο σύντομα:

javascriptconsole.log(['X', 'O'][i % 2]);

Ας απλοποιήσουμε τώρα τον κώδικα της συνάρτησής μας start:

javascriptfunction start(cells) {
  let i = 0;
  
  for (let cell of cells) {
    cell.addEventListener('click', function() {
      this.textContent = ['X', 'O'][i % 2];
      i++;
    });
  }
}
Задание 1

Ανεξάρτητα, χωρίς να κοιτάτε τον κώδικά μου, κάντε την περιγραφόμενη τροποποίηση.

Задание 2

Προς το παρόν, οποιοδήποτε κελί μπορεί να κάνει απεριόριστους κλικ, αλλάζοντας, για παράδειγμα, το X σε O. Διορθώστε το.