ActionScript3.0教程06:所有運算符的介紹
ActionScript3.0教程06:所有運算符的介紹
運算符是一種特殊的函數,它們具有一個或多個操作數并返回相應的值。
【PS:溫馨提示:近來天氣炎熱,希望各位同學堅持,送一句名言給大家提提精神:成功意味著持續(xù)不斷的忍耐】
“操作數”是被運算符用作輸入的值,通常是字面值、變量或表達式。
例如,在下面的代碼中,將加法運算符
(+) 和乘法運算符 (*) 與三個字面值操作數(2、3 和 4)結合使用來返回一個值。賦值運算
符 (=) 隨后使用該值將所返回的值 14 賦給變量 sumNumber。
var sumNumber:uint = 2 + 3 * 4; // uint = 14
運算符可以是一元、二元或三元的。 “一元”運算符有 1 個操作數。例如,遞增運算符 (++)
就是一元運算符,因為它只有一個操作數。 “二元”運算符有 2 個操作數。例如,除法運算
符 (/) 有 2 個操作數。“三元”運算符有 3 個操作數。例如,條件運算符 (?:) 具有 3 個操
作數。
有些運算符是“重載的” ,這意味著它們的行為因傳遞給它們的操作數的類型或數量而異。
例如,加法運算符 (+) 就是一個重載運算符,其行為因操作數的數據類型而異。
如果兩個操作數
都是數字,則加法運算符會返回這些值的和。如果兩個操作數都是字符串,則加法運算符會
返回這兩個操作數連接后的結果。下面的示例代碼說明運算符的行為如何因操作數而異:
trace(5 + 5); // 10
trace("5" + "5"); // 55
運算符的行為還可能因所提供的操作數的數量而異。減法運算符 (-) 既是一元運算符又是二
元運算符。對于減法運算符,如果只提供一個操作數,則該運算符會對操作數求反并返回結
果;如果提供兩個操作數,則減法運算符返回這兩個操作數的差。下面的示例說明首先將減
法運算符用作一元運算符,然后再將其用作二元運算符。
trace(-3); // -3
trace(7-2); // 5
運算符的優(yōu)先級和結合律決定了運算符的處理順序。雖然對于熟悉算術的人來說,編譯器先
處理乘法運算符 (*) 然后再處理加法運算符 (+) 似乎是自然而然的事情,但實際上編譯器要
求顯式指定先處理哪些運算符。此類指令統(tǒng)稱為“運算符優(yōu)先級” 。ActionScript 定義了一
個默認的運算符優(yōu)先級,您可以使用小括號運算符 (()) 來改變它。學生范文網出品。例如,
下面的代碼改變上
一個示例中的默認優(yōu)先級,以強制編譯器先處理加法運算符,然后再處理乘法運算符:
var sumNumber:uint = (2 + 3) * 4; // uint == 20
您可能會遇到這樣的情況:同一個表達式中出現兩個或更多個具有相同的優(yōu)先級的運算符。
在這些情況下,編譯器使用“結合律”的規(guī)則來確定先處理哪個運算符。除了賦值運算符之
外,所有二進制運算符都是“左結合”的,也就是說,先處理左邊的運算符,然后再處理右
邊的運算符。賦值運算符和條件運算符 (?:) 都是 “右結合”的,也就是說,先處理右邊的
運算符,然后再處理左邊的運算符。
例如,考慮小于運算符 (<) 和大于運算符 (>),它們具有相同的優(yōu)先級。如果將這兩個運算符
用于同一個表達式中,那么,由于這兩個運算符都是左結合的,因此先處理左邊的運算符。
也就是說,以下兩個語句將生成相同的輸出結果:
trace(3 > 2 < 1); // false
trace((3 > 2) < 1); // false
將首先處理大于運算符,這會生成值 true,因為操作數 3 大于操作數 2。隨后,將值 true
與操作數 1 一起傳遞給小于運算符。下面的代碼表示此中間狀態(tài):
trace((true) < 1);
小于運算符將值 true 轉換為數值 1,然后將該數值與第二個操作數 1 進行比較,這將返回
值 false (因為值 1 不小于 1) 。
trace(1 < 1); // false
您可以用括號運算符來改變默認的左結合律。您可以通過用小括號括起小于運算符及其操作
數來命令編譯器先處理小于運算符。下面的示例使用與上一個示例相同的`數,但是因為使用
了小括號運算符,所以生成不同的輸出結果:
trace(3 > (2 < 1)); // true
將首先處理小于運算符,這會生成值 false,因為操作數 2 不小于操作數 1。值 false 隨后
將與操作數 3 一起傳遞給大于運算符。下面的代碼表示此中間狀態(tài):
trace(3 > (false));
大于運算符將值 false 轉換為數值 0,然后將該數值與另一個操作數 3 進行比較,這將返回
true (因為 3 大于 0)。
trace(3 > 0); // true
下表按優(yōu)先級遞減的順序列出了 ActionScript 3.0 中的運算符。該表內同一行中的運算符具
有相同的優(yōu)先級。在該表中,每行運算符都比位于其下方的運算符的優(yōu)先級高。
組 運算符
主要 [] {x:y} () f(x) new x.y x[y] <></> @ :: ..
后綴 x++ x--
一元 ++x --x + - ~ ! delete typeof void
乘法 * / %
加法 + -
按位移位 << >> >>>
關系 < > <= >= as in instanceof is
等于 == != === !==
按位“與” &
按位“異或” ^
按位“或” |
邏輯“與” &&
邏輯“或” ||
條件 ?:
賦值 = *= /= %= += -= <<= >>= >>>= &= ^= |=
逗號 ,
主要運算符
主要運算符包括那些用來創(chuàng)建 Array 和 Object 字面值、對表達式進行分組、調用函數、實
例化類實例以及訪問屬性的運算符。
下表列出了所有主要運算符,它們具有相同的優(yōu)先級。屬于 E4X 規(guī)范的運算符用 (E4X) 來
表示。
運算符 執(zhí)行的運算
[] 初始化數組
{x:y} 初始化對象
() 對表達式進行分組
f(x) 調用函數
new 調用構造函數
x.y x[y] 訪問屬性
<></> 初始化 XMLList 對象 (E4X)
@ 訪問屬性 (E4X)
:: 限定名稱 (E4X)
.. 訪問子級 XML 元素 (E4X)
后綴運算符
后綴運算符只有一個操作數,它遞增或遞減該操作數的值。雖然這些運算符是一元運算符,
但是它們有別于其它一元運算符,被單獨劃歸到了一個類別,因為它們具有更高的優(yōu)先級和
特殊的行為。在將后綴運算符用作較長表達式的一部分時,會在處理后綴運算符之前返回表
達式的值。例如,下面的代碼說明如何在遞增值之前返回表達式 xNum++ 的值:
var xNum:Number = 0;
trace(xNum++); // 0
trace(xNum); // 1
下表列出了所有的后綴運算符,它們具有相同的優(yōu)先級:
運算符 執(zhí)行的運算
++ 遞增 (后綴)
-- 遞減 (后綴)
一元運算符
一元運算符只有一個操作數。這一組中的遞增運算符 (++) 和遞減運算符 (--) 是“前綴運算
符”,這意味著它們在表達式中出現在操作數的前面。前綴運算符與它們對應的后綴運算符
不同,因為遞增或遞減操作是在返回整個表達式的值之前完成的。例如,下面的代碼說明如
何在遞增值之后返回表達式 ++xNum 的值:
var xNum:Number = 0;
trace(++xNum); // 1
trace(xNum); // 1
下表列出了所有的一元運算符,它們具有相同的優(yōu)先級:
運算符 執(zhí)行的運算
++ 遞增 (前綴)
-- 遞減 (前綴)
+ 一元 +
- 一元 - (非)
! 邏輯 “非”
~ 按位 “非”
delete 刪除屬性
typeof 返回類型信息
void 返回 undefined 值
乘法運算符
乘法運算符具有兩個操作數,它執(zhí)行乘、除或求模計算。
下表列出了所有的乘法運算符,它們具有相同的優(yōu)先級:
運算符 執(zhí)行的運算
* 乘法
/ 除法
% 求模
加法運算符
加法運算符有兩個操作數,它執(zhí)行加法或減法計算。下表列出了所有加法運算符,它們具有
相同的優(yōu)先級:
按位移位運算符
按位移位運算符有兩個操作數,它將第一個操作數的各位按第二個操作數指定的長度移位。
下表列出了所有按位移位運算符,它們具有相同的優(yōu)先級:
運算符 執(zhí)行的運算
+ 加法
- 減法
運算符 執(zhí)行的運算
<< 按位向左移位
>> 按位向右移位
>>> 按位無符號向右移位
關系運算符
關系運算符有兩個操作數,它比較兩個操作數的值,然后返回一個布爾值。下表列出了所有
關系運算符,它們具有相同的優(yōu)先級:
運算符 執(zhí)行的運算
< 小于
> 大于
<= 小于或等于
>= 大于或等于
as 檢查數據類型
in 檢查對象屬性
instanceof 檢查原型鏈
is 檢查數據類型
等于運算符
等于運算符有兩個操作數,它比較兩個操作數的值,然后返回一個布爾值。下表列出了所有
等于運算符,它們具有相同的優(yōu)先級:
按位邏輯運算符
按位邏輯運算符有兩個操作數,它執(zhí)行位級別的邏輯運算。按位邏輯運算符具有不同的優(yōu)先
級;下表按優(yōu)先級遞減的順序列出了按位邏輯運算符:
運算符 執(zhí)行的運算
== 等于
!= 不等于
=== 嚴格等于
!== 嚴格不等于
運算符 執(zhí)行的運算
& 按位 “與”
^ 按位 “異或”
| 按位 “或”
按位邏輯運算符
按位邏輯運算符有兩個操作數,它執(zhí)行位級別的邏輯運算。按位邏輯運算符具有不同的優(yōu)先
級;下表按優(yōu)先級遞減的順序列出了按位邏輯運算符:
邏輯運算符
邏輯運算符有兩個操作數,它返回布爾結果。邏輯運算符具有不同的優(yōu)先級;下表按優(yōu)先級
遞減的順序列出了邏輯運算符:
運算符 執(zhí)行的運算
& 按位 “與”
^ 按位 “異或”
| 按位 “或”
運算符 執(zhí)行的運算
&& 邏輯 “與”
|| 邏輯 “或”
條件運算符
條件運算符是一個三元運算符,也就是說它有三個操作數。條件運算符是應用 if..else 條
件語句的一種簡便方法。
運算符 執(zhí)行的運算
?: 條件
賦值運算符
賦值運算符有兩個操作數,它根據一個操作數的值對另一個操作數進行賦值。下表列出了所
有賦值運算符,它們具有相同的優(yōu)先級:
運算符 執(zhí)行的運算
= 賦值
*= 乘法賦值
/= 除法賦值
%= 求模賦值
+= 加法賦值
-= 減法賦值
<<= 按位向左移位賦值
>>= 按位向右移位賦值
>>>= 按位無符號向右移位賦值
&= 按位 “與”賦值
^= 按位 “異或”賦值
|= 按位 “或”賦值
【ActionScript3.0教程06:所有運算符的介紹】相關文章: