Alternância de atributos sem valores

Suponha que temos um campo de entrada bloqueado e um botão:

html<input id="elem" disabled>
<input id="button" type="submit">

Vamos fazer com que cada clique no botão alterne o estado do campo de entrada - de bloqueado para desbloqueado e vice-versa. Primeiro, vamos obter referências aos nossos elementos em variáveis:

javascriptlet elem   = document.querySelector('#elem');
let button = document.querySelector('#button');

E agora vamos implementar o que planejamos:

javascriptbutton.addEventListener('click', function() {
  if (elem.disabled) {
    elem.disabled = false;
  } else {
    elem.disabled = true;
  }
});

No entanto, a tarefa pode ser resolvida com menos código:

javascriptbutton.addEventListener('click', function() {
  elem.disabled = !elem.disabled;
});
Задание 1

Explique como o código fornecido funciona.

Задание 2

Dada uma caixa de seleção e um botão. Faça com que cada clique no botão alterne o estado da caixa de seleção.