Var 与 Let

varlet 都可以用来声明变量。与 JavaScript 不同,在 Ninox 中 letvar 在作用域上没有区别。

变量的类型取决于赋给它的值的类型:

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"]);

变量名与表/字段 ID 的混淆

Ninox 保存代码的格式与屏幕上显示的略有不同。具体来说,字段名和表名会被替换成它们的 ID,也就是字母。

例如,下面这段计算已售商品总额的脚本:

sum('Invoice Items'.Total)

在系统代码中会保存成下面这样,其中 D 是表 'Invoice Items' 的 ID,E 是字段 Total 的 ID:

sum(D.E)

在这种情况下,如果创建了一个名为 D 的变量,就可能让编译器产生混淆,因为下面的系统代码无法分辨 D.E 指的是一个表,还是先前声明的变量 D

(var D := "hello"; sum(D.E))

为避免这类混淆,变量的命名应尽量不与表或字段的 ID、以及表名或字段名重合。这正是变量常常采用简短小写名称(例如 abc)的原因,以免与 ID 混淆。