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"]);
变量名与表/字段 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、以及表名或字段名重合。这正是变量常常采用简短小写名称(例如 a、b 或 c)的原因,以免与 ID 混淆。
