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