Phân tích sự luân phiên giữa X và O

Trong bài học này, tôi muốn chỉ cho bạn cách thực hiện sự luân phiên giữa X và O chỉ trong một dòng code. Rất có thể, bạn đã làm một cái gì đó như thế này:

javascriptfunction start(cells) {
  let i = 0; // giá trị bắt đầu của bộ đếm
  
  for (let cell of cells) {
    cell.addEventListener('click', function() {
      if (i % 2 == 0) {
        this.textContent = 'X';
      } else {
        this.textContent = '0';
      }
      
      i++; // tăng bộ đếm
    });
  }
}

Tôi sẽ đề xuất giải quyết bài toán ngắn gọn hơn. Hãy tạo mảng các 'người chơi' của chúng ta:

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

Như bạn thấy, trong mảng này, X có khóa 0, và O - khóa 1. Điều tương tự cũng có thể nói về i % 2 - đối với X, số dư sẽ là 0, và đối với O - 1.

Tức là, thứ này có thể được sử dụng thay cho khóa:

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

console.log(gamers[key]);

Hoặc thậm chí ngắn hơn:

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

Hoặc thậm chí ngắn hơn nữa:

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

Bây giờ hãy đơn giản hóa code hàm start của chúng ta:

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

Tự mình, không nhìn vào code của tôi, hãy áp dụng chỉnh sửa đã mô tả.

Задание 2

Hiện tại, có thể nhấp không giới hạn vào bất kỳ ô nào, thay đổi, ví dụ, X thành O. Hãy sửa lỗi này.