Var и Let
Объявить переменную можно как через var, так и через let. В отличие от JavaScript, в Ninox между let и var нет разницы в области видимости.
Тип переменной определяется типом присвоенного ей значения:
var t := "my text";
var b := false;
var n := 10;
Одну и ту же переменную можно объявить в коде несколько раз. В этом случае переменная сохраняет присвоенные ей тип и значение до нового объявления:
var b := true;
dialog("Message 1", "Value of b: " + b, ["ok"]);
var b := 12;
dialog("Message 2", "Value of b: " + b, ["ok"]);
Путаница между именами переменных и идентификаторами таблиц и полей
Ninox хранит код в формате, немного отличном от того, что показано на экране: имена полей и таблиц заменяются их идентификаторами, то есть буквами.
Например, такой скрипт, вычисляющий сумму проданных позиций:
sum('Invoice Items'.Total)
будет сохранён в системном коде так, где D — идентификатор таблицы 'Invoice Items', а E — идентификатор поля Total:
sum(D.E)
Если в этом контексте создать переменную D, компилятор может запутаться: по системному коду будет непонятно, обозначает ли D.E таблицу или объявленную ранее переменную D:
(var D := "hello"; sum(D.E))
Чтобы избежать такой путаницы, переменным следует давать имена, которые вряд ли совпадут с идентификаторами или именами таблиц и полей. Именно поэтому переменные часто называют короткими строчными именами (например, a, b или c) — так их не спутать с идентификаторами.
