ActionScript3.0教程06:所有运算符的介绍

时间:2013-07-25 14:40:41 ActionScript 我要投稿

ActionScript3.0教程06:所有运算符的介绍

ActionScript3.0教程06:所有运算符的介绍
运算符是一种特殊的函数,它们具有一个或多个操作数并返回相应的值。
【PS:温馨提示:近来天气炎热,希望各位同学坚持,送一句名言给大家提提精神:成功意味着持续不断的忍耐】

“操作数”是被运算符用作输入的值,通常是字面值、变量或表达式。

例如,在下面的代码中,将加法运算符
(+) 和乘法运算符 (*) 与三个字面值操作数(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

 

 

运算符的优先级和结合律决定了运算符的处理顺序。虽然对于熟悉算术的人来说,编译器先
处理乘法运算符 (*) 然后再处理加法运算符 (+) 似乎是自然而然的事情,但实际上编译器要
求显式指定先处理哪些运算符。此类指令统称为“运算符优先级” 。ActionScript 定义了一
个默认的运算符优先级,您可以使用小括号运算符 (()) 来改变它。学生范文网出品。例如,

下面的代码改变上
一个示例中的默认优先级,以强制编译器先处理加法运算符,然后再处理乘法运算符:
var sumNumber:uint = (2 + 3) * 4; // uint == 20
您可能会遇到这样的情况:同一个表达式中出现两个或更多个具有相同的优先级的运算符。
在这些情况下,编译器使用“结合律”的规则来确定先处理哪个运算符。除了赋值运算符之
外,所有二进制运算符都是“左结合”的,也就是说,先处理左边的运算符,然后再处理右
边的运算符。赋值运算符和条件运算符 (?:) 都是 “右结合”的,也就是说,先处理右边的
运算符,然后再处理左边的运算符。
例如,考虑小于运算符 (<) 和大于运算符 (>),它们具有相同的优先级。如果将这两个运算符
用于同一个表达式中,那么,由于这两个运算符都是左结合的,因此先处理左边的运算符。
也就是说,以下两个语句将生成相同的输出结果:
trace(3 > 2 < 1);   // false
trace((3 > 2) < 1); // false
将首先处理大于运算符,这会生成值 true,因为操作数 3 大于操作数 2。随后,将值 true
与操作数 1 一起传递给小于运算符。下面的代码表示此中间状态:
trace((true) < 1);
小于运算符将值 true 转换为数值 1,然后将该数值与第二个操作数 1 进行比较,这将返回
值 false (因为值 1 不小于 1) 。
trace(1 < 1); // false

您可以用括号运算符来改变默认的左结合律。您可以通过用小括号括起小于运算符及其操作
数来命令编译器先处理小于运算符。下面的示例使用与上一个示例相同的`数,但是因为使用
了小括号运算符,所以生成不同的输出结果:
trace(3 > (2 < 1)); // true
将首先处理小于运算符,这会生成值 false,因为操作数 2 不小于操作数 1。值 false 随后
将与操作数 3 一起传递给大于运算符。下面的代码表示此中间状态:
trace(3 > (false));
大于运算符将值 false 转换为数值 0,然后将该数值与另一个操作数 3 进行比较,这将返回
true (因为 3 大于 0)。
trace(3 > 0); // true
下表按优先级递减的顺序列出了 ActionScript 3.0 中的运算符。该表内同一行中的运算符具
有相同的优先级。在该表中,每行运算符都比位于其下方的运算符的优先级高。

组 运算符
主要 [] {x:y} () f(x) new x.y x[y] <></> @ :: ..
后缀 x++ x--
一元 ++x --x + - ~ ! delete typeof void
乘法 * / %
加法 + -
按位移位 << >> >>>
关系 < > <= >= as in instanceof is
等于 == != === !==
按位“与” &
按位“异或” ^
按位“或” |
逻辑“与” &&
逻辑“或” ||
条件 ?:
赋值 = *= /= %= += -= <<= >>= >>>= &= ^= |=
逗号 ,

主要运算符
主要运算符包括那些用来创建 Array 和 Object 字面值、对表达式进行分组、调用函数、实
例化类实例以及访问属性的运算符。 
下表列出了所有主要运算符,它们具有相同的优先级。属于 E4X 规范的运算符用 (E4X) 来
表示。
 
运算符 执行的运算
[] 初始化数组
{x:y} 初始化对象
() 对表达式进行分组
f(x) 调用函数
new 调用构造函数
x.y x[y] 访问属性
<></> 初始化 XMLList 对象 (E4X)
@ 访问属性 (E4X)
:: 限定名称 (E4X)
.. 访问子级 XML 元素 (E4X)


后缀运算符
后缀运算符只有一个操作数,它递增或递减该操作数的值。虽然这些运算符是一元运算符,
但是它们有别于其它一元运算符,被单独划归到了一个类别,因为它们具有更高的优先级和
特殊的行为。在将后缀运算符用作较长表达式的一部分时,会在处理后缀运算符之前返回表
达式的值。例如,下面的代码说明如何在递增值之前返回表达式 xNum++ 的值:
var xNum:Number = 0;
trace(xNum++); // 0
trace(xNum);   // 1
下表列出了所有的后缀运算符,它们具有相同的优先级:
运算符 执行的运算
++ 递增 (后缀)
-- 递减 (后缀)

一元运算符
一元运算符只有一个操作数。这一组中的递增运算符 (++) 和递减运算符 (--) 是“前缀运算
符”,这意味着它们在表达式中出现在操作数的前面。前缀运算符与它们对应的后缀运算符
不同,因为递增或递减操作是在返回整个表达式的值之前完成的。例如,下面的代码说明如
何在递增值之后返回表达式 ++xNum 的值:
var xNum:Number = 0;
trace(++xNum); // 1
trace(xNum);   // 1
下表列出了所有的一元运算符,它们具有相同的优先级:
运算符 执行的运算
++ 递增 (前缀)
-- 递减 (前缀)
+ 一元 +
- 一元 - (非)
! 逻辑 “非”
~ 按位 “非”
delete 删除属性
typeof 返回类型信息
void 返回 undefined 值


乘法运算符
乘法运算符具有两个操作数,它执行乘、除或求模计算。
下表列出了所有的乘法运算符,它们具有相同的优先级:
运算符 执行的运算
* 乘法
/ 除法
% 求模

加法运算符
加法运算符有两个操作数,它执行加法或减法计算。下表列出了所有加法运算符,它们具有
相同的优先级:
按位移位运算符
按位移位运算符有两个操作数,它将第一个操作数的各位按第二个操作数指定的长度移位。
下表列出了所有按位移位运算符,它们具有相同的优先级:
运算符 执行的运算
+ 加法
- 减法
运算符 执行的运算
<< 按位向左移位
>> 按位向右移位
>>> 按位无符号向右移位

关系运算符
关系运算符有两个操作数,它比较两个操作数的值,然后返回一个布尔值。下表列出了所有
关系运算符,它们具有相同的优先级:
运算符 执行的运算
< 小于
> 大于
<= 小于或等于
>= 大于或等于
as 检查数据类型
in 检查对象属性
instanceof 检查原型链
is 检查数据类型


等于运算符
等于运算符有两个操作数,它比较两个操作数的值,然后返回一个布尔值。下表列出了所有
等于运算符,它们具有相同的优先级:
按位逻辑运算符
按位逻辑运算符有两个操作数,它执行位级别的逻辑运算。按位逻辑运算符具有不同的优先
级;下表按优先级递减的顺序列出了按位逻辑运算符:
运算符 执行的运算
== 等于
!= 不等于
=== 严格等于
!== 严格不等于
运算符 执行的运算
& 按位 “与”
^ 按位 “异或”
| 按位 “或”


按位逻辑运算符
按位逻辑运算符有两个操作数,它执行位级别的逻辑运算。按位逻辑运算符具有不同的优先
级;下表按优先级递减的顺序列出了按位逻辑运算符:
逻辑运算符
逻辑运算符有两个操作数,它返回布尔结果。逻辑运算符具有不同的优先级;下表按优先级
递减的顺序列出了逻辑运算符:
运算符 执行的运算
& 按位 “与”
^ 按位 “异或”
| 按位 “或”
运算符 执行的运算
&& 逻辑 “与”
|| 逻辑 “或”

条件运算符
条件运算符是一个三元运算符,也就是说它有三个操作数。条件运算符是应用 if..else 条
件语句的一种简便方法。
运算符 执行的运算
?: 条件
赋值运算符
赋值运算符有两个操作数,它根据一个操作数的值对另一个操作数进行赋值。下表列出了所
有赋值运算符,它们具有相同的优先级:
运算符 执行的运算
= 赋值
*= 乘法赋值
/= 除法赋值
%= 求模赋值
+= 加法赋值
-= 减法赋值
<<= 按位向左移位赋值
>>= 按位向右移位赋值
>>>= 按位无符号向右移位赋值
&= 按位 “与”赋值
^= 按位 “异或”赋值
|= 按位 “或”赋值

【ActionScript3.0教程06:所有运算符的介绍】相关文章:

1.ActionScript3.0教程05:所有语法介绍「超完整」

2.★Flash ActionScript3.0运算符

3.Actionscript3.0教程09:函数的使用介绍

4.ActionScript3.0自学教程

5.ActionScript3.0基础教程

6.ActionScript3.0实用教程

7.Flash ActionScript3.0高级教程全集

8.Flash ActionScript3.0快速入门教程