Zeta
October 13, 2021, 2:23pm
1
Добрый день!
Какая функция будет вызываться в таком коде?
function regulation_function_1(newValue, devName, cellName) { ... };
function regulation_function_2(newValue, devName, cellName) { ... };
var current_regulation = regulation_function_1;
defineRule(rule_name, {
whenChanged: device + '/' + cell,
then: current_regulation
});
current_regulation = regulation_function_2;
Здравствуйте! Чтобы функция выполнилась, нужно ставить () после имени функции:
current_regulation();
При первом просмотре правил после определения правила переменной current_regulation
будет присвоена функция regulation_function_2
. Соответственно при дальнейшем выполнении правила будет вызываться функция regulation_function_2
, если вызывать как current_regulation();
Zeta
October 14, 2021, 8:11am
3
Не совсем понял, можно еще раз? Правильно будет вот так?
function regulation_function_1(newValue, devName, cellName) { ... };
function regulation_function_2(newValue, devName, cellName) { ... };
var current_regulation = regulation_function_1;
defineRule(rule_name, {
whenChanged: device + '/' + cell,
then: current_regulation()
});
current_regulation = regulation_function_2;
Да. Если вы хотите именно вызывать функцию current_regulation
на выполнение из правила, то делать это нужно так:
current_regulation();
Скобки указывают на то, что нужно выполнить функцию, присвоенную переменной current_regulation
.
system
Closed
January 27, 2022, 8:20am
5
Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.