共用方式為


JScript 設定和相等

更新:2007 年 11 月

在 JScript 中,指派運算子是用來指派值給變數的。等號比較運算子可以比較二個值。

設定

就像很多程式設計語言一樣,JScript 使用等號 (=) 來指定值給變數:這就是指派運算子。= 運算子左邊的運算元必須是 Lvalue,亦即必須是變數、陣列元素或物件屬性。

= 運算子右邊的運算元,必須是一個 RvalueRvalue 可以是任何型別的任意值,包括運算式的結果值。以下是 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".

請參閱

概念

Boolean 資料

型別轉換

其他資源

JScript 語言教學課程

JScript 條件式結構