Время жизни переменных

Доброго времени суток!

Столкнулся со странным поведением в значениях переменной объявленной в теле модуля (самопроизвольно обнуляется).
Я понимаю, что эмпирический путь хорош, - но где можно прочитать про время жизни переменных???

  1. Переменная объявлена (var) во внепроцедурной части модуля; - где, как долго и кому доступна???
  2. Переменная объявлена (var) внутри функции; - где, как долго и кому доступна???
  3. Переменная объявлена (var) внутри функции, но она так же используется в таймере, объявленом внутри этой функции; - где, как долго и кому доступна???
  4. Переменная внутри функции инициализирована явно (MyParam = 5); - где, как долго и кому доступна???
  5. Переменная внутри функции инициализирована явно (MyParam = 5), но она так же используется в таймере, объявленом внутри этой функции; - где, как долго и кому доступна???

Заранее спасибо.

vDiamond,
хотел уточнить, что вы подразумеваете под модулем — замыкание вида

(function() {})();

Какая версия движка правил wb-rules у вас установлена?

Вообще в стабильном движке пространство имен не отличается от принятого ECMAScript 5 (duktape 1.0.2).

В бета-версии wb-rules 2 глобально объявленные переменные видны только в своем сценарии (см. https://wirenboard.com/wiki/index.php/Движок_правил_wb-rules_2.0 , рАздел "Изоляция сценариев).

Коротко об области видимости:
https://getinstance.info/articles/javascript/variables-scope-in-javascript/

Да, именно это и подразумеваю.

Что касается глобальных и локальных переменных - более-менее понятно, но как они передаются в таймеры?

Где можно посмотреть версию wb-rules?

Напишите, пожалуйста, подробнее ваш вопрос.

dpkg -s wb-rules

Переменная внутри функции инициализирована явно (MyParam = 5), но она так же используется в таймере, объявленном внутри этой функции; - как с этой переменной будет взаимодействовать таймер???
А если после инициализации таймера - значение переменной изменится? Таймер же сработает после…

Версия wb-rules: 1.7.1

wb-rules специфичная среда использования JS. Необходимо учитывать особенности работы контроллера при просмотре правил. Это не браузер.
Я бы рекомендовал не надеяться на то, что переменная сохранится к моменту запуска таймера. Правильнее было бы запускать по таймеру функцию, которая воспроизводит именно генерацию того параметра, который в начале вы предлагали передавать.

В том-то и дело, что специфичная…
Чтобы не “изобретать велосипед” - я и задал вопрос.
Наверняка же я не единственный, кто задался подобным вопросом. Да и вопрос - не такой уж редкий, если возникает необходимость написания сложных правил…