1.8. 邏輯運算

來源:互聯網
上載者:User

1.8. 邏輯運算
 
問題
我想檢測兩個值的大小
解決辦法
使用==號來比較兩個值,使用 isNaN( ) 來檢測是否是有效值.
討論
==號運算式總是返回布爾值來表示兩個值是否相等。當兩個數類型不同時,比較時會自動轉換為相同的類型再進行比較,如字元型的6和數字型的6比較的話被認為相等。
trace(5 == 6);    // : false
trace(6 == 6);    // : true
trace(6 == "6");  // : true
trace(5 == "6");  // : false
預設的工程項目,在運行上面的代碼會出錯。因為編譯器被設定為強型別編譯檢測。關掉強型別檢測,會把數字型轉換為字元型,然後再進行比較。一般不推薦關閉強型別檢測,這樣可能會引發一些隱形錯誤不利於程式穩定。
當兩個數值不相等時,!=操作符將返回true,否則為false
trace(5 != 6);    // : true
trace(6 != 6);    // : false
trace(6 != "6");  // : false
trace(5 != "6");  // : true
同樣,只有在關閉強型別檢測後才能編譯通過。

平時要注意不要把==寫成=,否則會出現無法預料的錯誤。比如:
var quantity:int = 5;
// 下面的代碼是錯誤的,正確應為 if (quantity == 6)
if (quantity = 6) {
  trace("Rabbits are bunnies.");
}
trace("quantity is " + quantity);  // 輸出: quantity is 6
 
可以使用 is 操作符來檢測資料類型
var quantity:int = 5;
if (quantity is int) {
  trace("Yippee. It's an integer.");
}
然而有些數值是非法的。下面的代碼中quantity 等於 NaN (一個表示無效數位常數)
var quantity:Number = 15 - "rabbits";
NaN 雖然是無效的數值,但它的資料類型仍屬於 Number ,
trace(typeof quantity);   // 顯示: "number"
所以,為了測試有個number變數類型不是數字,但又是合法的number,嘗試下這麼寫:
var quantity:Number = 15 - "rabbits";
if (quantity is Number) {
 
  //看起來好像正確,實際上是錯誤的,因為quantity != NaN 結果被認為都是false
  if (quantity != NaN) {
    trace("Yippee. It's a number.");
  }
}

為了檢測一個數字是不合法的,要使用指定的函數isNaN( ) 看下面的例子:
var quantity:Number = 15 - "rabbits";
if (isNaN(quantity)) {
  trace("Sorry, that is not a valid number.");
}
如果要檢測相反條件,只要取反就可以,比如為了檢測一個變數是個合法的number,使用!isNAN( ),如下:
var quantity:Number = 15 - "rabbits";
if (!isNaN(quantity)) {
 trace ("That is a valid number.");
}
當然了你還可以使用<和>比較符號來比較兩個值得大小。
trace(5 < 6);    // 顯示: true
trace(5 > 5);    // 顯示: false
還有<= 和>= 符號
trace(5 <= 6);   // 顯示: true
trace(5 >= 5);   // 顯示: true
ActionScript 資料類型的比較有兩個情況。在ActionScript中,資料類型分為兩類:基本類型
 (string, number, and Boolean) 和複合類型(object, sprite, and array)。當比較基本類型時,是比較他們的值,下面的例子中 quantity 和 total 被認為是相等的因為他們包含相同的值6
var quantity:Number = 6;
var total:Number = 6;
trace (quantity == total);         // 顯示: true
然而,當比較符合資料類型時是通過他們的“引用”來比較。當兩個引用所指向的對象完全相同才被認為是相等的,而不僅僅是對象的內容相同。例如,兩個數組包含相同的內容,但是他們卻不相等:
// 用相同的內容建立兩個數組
var arrayOne:Array = new Array("a", "b", "c");
var arrayTwo:Array = new Array("a", "b", "c");
trace(arrayOne == arrayTwo);          // 顯示: false
只要當引用指向同一個object, array, 或 sprite 才相等. 例子:
// 建立一個簡單的數組
var arrayOne:Array = new Array("a", "b", "c");
// 建立另一個變數指向同一個數組
var arrayTwo:Array = arrayOne;
trace(arrayOne == arrayTwo);          // 顯示: true
 
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.