JScript 設定和相等
更新:2007 年 11 月
在 JScript 中,指派運算子是用來指派值給變數的。等號比較運算子可以比較二個值。
設定
就像很多程式設計語言一樣,JScript 使用等號 (=) 來指定值給變數:這就是指派運算子。= 運算子左邊的運算元必須是 Lvalue,亦即必須是變數、陣列元素或物件屬性。
= 運算子右邊的運算元,必須是一個 Rvalue。Rvalue 可以是任何型別的任意值,包括運算式的結果值。以下是 JScript 指派陳述式的範例。
anInteger = 3;
JScript 將這個陳述式解譯成下列意義:
「將值 3 指派給變數 anInteger」
或
"「anInteger 取用值 3」
只要型別附註不將陳述式中的變數繫結至特殊資料型別,就能設定成功。否則,編譯器會試圖將 Lvalue 轉換成資料型別 Rvalue。如果轉換不成功,編譯器會產生錯誤。如果某些值轉換成功,某些值轉換失敗,編譯器會產生警告,指出執行程式碼時可能轉換失敗。
本範例中的變數 i 內儲存的整數值被指派至變數 x 時,會轉換成雙精度浮點數值。
var i : int = 29;
var x : double = i;
如需詳細資訊,請參閱型別轉換。
相等
JScript 不同於某些程式設計語言,它不以等號做為比較運算子,而僅做為指派運算子。如需在兩個值之間比較,您可以使用等號比較運算子 (==) 或嚴格等號比較運算子 (===)。
等號比較是以傳值方式比較基本字串、數字和布林值。如果兩個變數有相同的值,在必要的型別轉換後,等號比較運算子便會傳回 true。物件 (包括 Array、Function、String、Number、Boolean、Error、Date 和 RegExp 物件) 是以傳址方式進行比較。即使兩個物件變數有相同的值,但只有在參考相同物件時,才會傳回 true。
嚴格等號比較運算子會比較兩個運算式的值和型別,只有在等號比較運算子比較兩個運算式相等,且兩個運算元的資料型別相同時,才會傳回 true。
注意事項: |
---|
嚴格等號比較運算子不會區分不同的數字資料型別。請確定您了解指派運算子、等號比較運算子和嚴格等號比較運算子之間的差異。 |
在指令碼中所做的比較一定會產生布林值。請看下面的 JScript 程式碼行。
y = (x == 2000);
這裡會測試變數 x 的值,看它是否等於數字 2000。如果是,比較的結果就是布林值 true,該值會指定給變數 y**。**如果 x 不等於 2000,則比較的結果就是布林值 false,該值會指定給 y。
等號比較運算子會進行型別轉換以檢查值是否相同。下行 JScript 程式碼中,在將常值字串 "42" 和數字 42 加以比較之前,會先將它轉換為一個數字。結果是 true。
42 == "42";
物件是以不同的規則來比較。等號比較運算子的行為,取決於物件型別。如果物件是等號比較運算子定義的類別的執行個體,傳回的值取決於等號比較運算子的實作。雖然其他 .NET Framework 語言允許定義有提供等號比較運算子的類別,但在 JScript 中不能定義這種類別。
如果物件沒有定義等號比較運算子,例如以 JScript Object 物件為基礎的物件或是 JScript 類別的執行個體,則只有在雙方物件都參考相同物件時,比較結果才會視為相同。這表示兩個資料相同的不同物件,比較為不同物件。下面這個範例可說明這個行為。
// A primitive string.
var string1 = "Hello";
// Two distinct String objects with the same value.
var StringObject1 = new String(string1);
var StringObject2 = new String(string1);
// An object converts to a primitive when
// comparing an object and a primitive.
print(string1 == StringObject1); // Prints true.
// Two distinct objects compare as different.
print(StringObject1 == StringObject2); // Prints false.
// Use the toString() or valueOf() methods to compare object values.
print(StringObject1.valueOf() == StringObject2); // Prints true.
等號比較運算子在控制結構的條件陳述式中特別有用。以下是將等號比較運算子與使用該運算子的陳述式加以組合。請看以下的 JScript 程式碼範例。
if (x == 2000)
z = z + 1;
else
x = x + 1;
在 JScript 中,如果 x 的值等於 2000,if...else 陳述式便會執行一個動作 (在此情況是 z = z + 1);如果 x 的值不等於 2000,則執行另一個動作 (x = x + 1)。如需詳細資訊,請參閱 JScript 條件式結構。
嚴格等號比較運算子 (===) 只針對數字資料型別執行型別轉換。這表示整數 42 會視為與雙精度浮點數 42 相同,但兩者皆與字串 "42" 不相同。下列 JScript 程式碼將示範這項行為。
var a : int = 42;
var b : double = 42.00;
var c : String = "42";
print(a===b); // Displays "true".
print(a===c); // Displays "false".
print(b===c); // Displays "false".