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。
