Variables and data types

這裡我們來討論WMLScript language的兩個重要部分: variables 和 data types. variable 是相關於data value的名稱. 你可以利用變數去儲存和運用程式資料. WMLScript 支援區域變數當你宣告程式以及參數時.

Variable declaration

變數的宣告在WMLScript裡面具有強制性.利用var 這個關鍵字以及一個variable名稱.Variable名稱必須根據 “Identifiers”中的定義 .下面是幾個例子:

var x;
var price;
var x,y;
var size = 3;

注意變數必須在使用前先宣告.變數的初始值可有可無.沒有初始值的 variables 內含空字串.

Variable scope and lifetime

WMLScript variable的有效範圍在它所宣告的 function之內.注意在 function中,變數名稱必需是唯一的.

function priceCheck(givenPrice) {
if (givenPrice > 100) {
var newPrice = givenPrice;
} else {
newPrice = 100;
};
return newPrice;
};

variable的 lifetime 在變數宣告以及程式結束之間.

function foo() {
x = 1; // Error: usage before declaration
var x,y;
if (x) {
var (y); // Error: redeclaration
};
};

Variable access

變數必須在有宣告到的function中使用.利用變數名稱去取代變數值:

var myAge = 37;
var yourAge = 63;
var ourAge = myAge + yourAge;

Variable Types

WMLScript是個weakly typed language: 內部基本的資料型態有: boolean, integer, floating-point string.另外第五個資料型態invalid 適用在 cases 中, invalid必須跟其他的內部資料型態區分時.這些資料型態只支援在 internally, 你不用去指明variable types,而且任何的variable可以含有任何資料型態.WMLScript會自動去決定你需要什麼.

var flag = true; // Boolean
var number = 12; // Integer
var temperature = 37.7; // Float
number = "XII"; // String
var except = invalid; // Invalid

L-values

有些計算需要left operand去參考變數(L-value)而不是值.因此WMLScript除了支援五種資料型態外,第六種變數型態用來指明變數名稱必須提供.

result += 111; // += operator requires a variable

Type equivalency

WMLScript 支援不同資料型態的運算.所有的運算子對運算元指明所接受的型態.自動的資料型態轉換用在運算元上.詳細內容可參考“Operators and expressions”以及“Automatic data type conversion rules”.

  • Numeric values

    WMLScript 支援兩種不同的數值資料型態: integer floating-point.數字的值可為其中一種,一個更一般化的term number 可以用來取代之.你可以直接給變數一個值,也可以在執行中用運算來定義變數規則.integer和floating-point 的轉換規則定義在“Automatic data type conversion rules”.

    var pi = 3.14;
    var length = 0;
    var radius = 2.5;
    length = 2*pi*radius

  • Integer size

    integer size 為32 bits,所支援的數字範圍為從–2147483648 到 2147483647.你可以利用下面的Lang library function在執行中得到這些值.

    Lang.maxInt () 表示最大值. Lang.minInt () 表示最小值.

  • Floating-point size

    WMLScript 支援 32-bit單精度 floating-point型式:最大值: 3.40282347E+38.最小非零值: 1.17549435E– 38.

    同樣的你可以利用下面的 Float library來求得這些值:

    Float.maxFloat () 表示最大值.Float.minFloat ()表示最小非零值.

    特別的floating-point 數字型態可以用下面規則處理:

    當運算結果為 floating-point ,但不是單精度floating-poin所支援的有限數字,則結果為invalid value.當運算結果為 floating-point underflow 則值為 zero (0.0).正負零是沒有區別的.

    String values

    WMLScript支援strings ,包括letters, digits, special character等等.你可以用string literals初始化變數,也可以運用string

    values,WMLScript中的運算和程式都在標準 String library有描述.

    var msg = "Hello";
    var len = String.length(msg);
    msg = msg + 'World!';

    Boolean values

    你可以用Boolean values去初始化及定義變數,或是在statements中需要boolean value為參數.Boolean value可以為字母或邏輯運算值.

    var truth = true;
    var lie = !truth;