Проблема с пониманием кода

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем Николай Додик, 2 янв 2017.

  1. var button = require('@amperka/button').connect(P6);
    var led = require('@amperka/led').connect(P1);
    var mops = false;
    button.on('press', function() {
    mops=!mops;
    if(mops) {led.turnOff();}
    else {led.blink(0.1, 0.1);}
    });
    Не понимаю зачем заводить переменную mops и присваивать ей значение "ложь", а потом использовать (i) внутри функции. Помогите пожалуйста.
     
  2. Переменная mops нужна, чтобы хранить состояние диода (выключен или мигает). Если б он не мигал, а просто включался, то переменная была бы не нужна, мы могли бы использовать встроенный метод led.isOn() для проверки включен он или нет. А так во время нажатия на кнопку он может быть как включен, так и выключен (т.к. он мигает).
    Единственное, в этом примере mops=!mops логичнее перенести в конец функции, иначе при первом нажатии на кнопку после загрузки программы ничего не произойдет, т.к. выполнится led.turnOff() при том, что диод и так выключен.
    Кстати фигурные скобки не обязательны в if, если выполняется только одно выражение.
    Код (Javascript):

    var button = require('@amperka/button').connect(P3);
    var led = require('@amperka/led').connect(P1);
    var mops = false;

    button.on('press', function() {
      if (mops) led.turnOff();
      else led.blink(0.1, 0.1);
      mops = !mops;
    });
     
     
    Error407 нравится это.