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。