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) — так их не спутать с идентификаторами.