用于 Adobe® Flash® Platform 的 ActionScript® 3.0 参考
主页  |  隐藏包列表和类列表 |   |   |  新增内容  |  索引  |  附录  |  为什么显示为英语?
过滤条件: 正在从服务器检索数据...
正在从服务器检索数据...
 

运算符 

符号运算符是指定如何组合、比较或修改表达式值的字符。


  XML
 @attribute identifier标识 XML 或 XMLList 对象的属性。
 { }braces (XML)计算在 XML 或 XMLList 初始值设定项中使用的表达式。
 [ ]brackets (XML)访问 XML 或 XMLList 对象的属性或特性。
 +concatenation (XMLList)将 XML 或 XMLList 值连接(合并)到 XMLList 对象中。
 +=concatenation assignment (XMLList)对 XMLList 对象 expression1 赋予 expression1 + expression2 的值。
  delete (XML)删除由 reference 指定的 XML 元素或属性。
 ..descendant accessor定位到 XML 或 XMLList 对象的后代元素,或(结合使用 @ 运算符)查找匹配的后代属性。
 dot (XML)定位到 XML 或 XMLList 对象的子元素,或(结合使用 @ 运算符)返回 XML 或 XMLList 对象的属性。
 ( )parentheses (XML)计算 E4X XML 构造中的表达式。
 < >XML literal tag delimiter在 XML 文本中定义 XML 标签。
 其他
 []array access用指定的元素(a0 等)初始化一个新数组或多维数组,或者访问数组中的元素。
  as计算第一个操作数指定的表达式是否为第二个操作数指定的数据类型的成员。
 comma计算 expression1,然后计算 expression2,依此类推。
 ?:conditional计算 expression1,如果 expression1 的值为 true,则结果为 expression2 的值;否则结果为 expression3 的值。
  delete破坏由 reference 指定的对象属性;如果在运算完成后该属性不存在,则结果为 true,否则结果为 false
 dot访问类变量和方法,获取并设置对象属性并分隔导入的包或类。
  in计算属性是否为特定对象的一部分。
  instanceof计算表达式的原型链是否包括 function 的原型对象。
  is计算对象是否与特定数据类型、类或接口兼容。
 ::name qualifier标识属性、方法或 XML 属性或特性的命名空间。
  new对类实例进行实例化。
 {}object initializer创建一个新对象,并用指定的 namevalue 属性对初始化该对象。
 ()parentheses对一个或多个参数执行分组运算,执行表达式的顺序计算,或者括住一个或多个参数并将它们作为参量传递给括号前面的函数。
 /RegExp delimiter如果用在字符之前和之后,则表示字符具有字面值,并被视作一个正则表达式 (RegExp),而不是一个变量、字符串或其他 ActionScript 元素。
 :type用于指定数据类型;此运算符可指定变量类型、函数返回类型或函数参数类型。
  typeof计算 expression 并返回一个指定表达式的数据类型的字符串。
  void计算表达式,然后放弃其值,返回 undefined
 字符串
 +concatenation连接(合并)字符串。
 +=concatenation assignmentexpression1 赋予 expression1 + expression2 的值。
 "string delimiter如果用在字符之前和之后,则表示字符具有字面值,并被视作一个字符串,而不是一个变量、数值或其他 ActionScript 元素。
 按位
 &bitwise ANDexpression1expression2 转换为 32 位无符号整数,并对整数参数的每一位执行 Boolean AND 运算。
 <<bitwise left shiftexpression1shiftCount 转换为 32 位整数,并将 expression1 中的所有位向左移动由 shiftCount 转换所得到的整数指定的位数。
 ~bitwise NOTexpression 转换为一个 32 位带符号整数,然后按位对 1 求补。
 |bitwise ORexpression1expression2 转换为 32 位无符号整数,并在 expression1expression2 的对应位为 1 的每个位的位置放置一个 1。
 >>bitwise right shiftexpressionshiftCount 转换为 32 位整数,并将 expression 中的所有位向右移动由 shiftCount 转换所得到的整数指定的位数。
 >>>bitwise unsigned right shift此运算符与 bitwise right shift (>>) 运算符基本相同,只是此运算符不保留原始表达式的符号,因为左侧的位始终用 0 填充。
 ^bitwise XORexpression1expression2 转换为 32 位无符号整数,并在 expression1expression2 中为 1(但不是在两者中均为 1)的对应位的每个位的位置返回 1。
 按位组合赋值
 &=bitwise AND assignmentexpression1 赋予 expression1 & expression2 的值。
 <<=bitwise left shift and assignment执行 bitwise left shift (<<=) 运算,并将内容作为结果存储在 expression1 中。
 |=bitwise OR assignmentexpression1 赋予 expression1 | expression2 的值。
 >>=bitwise right shift and assignment执行按位向右移位运算,并将结果存储在 expression 中。
 >>>=bitwise unsigned right shift and assignment执行无符号按位向右移位运算,并将结果存储在 expression 中。
 ^=bitwise XOR assignmentexpression1 赋予 expression1 ^ expression2 的值。
 比较
 ==equality测试两个表达式是否相等。
 >greater than比较两个表达式,确定 expression1 是否大于 expression2;如果是,则结果为 true
 >=greater than or equal to比较两个表达式,确定 expression1 是大于等于 expression2(值为 true)还是 expression1 小于 expression2(值为 false)。
 !=inequality测试结果是否与 equality (==) 运算符正好相反。
 <less than比较两个表达式,确定 expression1 是否小于 expression2;如果是,则结果为 true
 <=less than or equal to比较两个表达式,并确定 expression1 是否小于等于 expression2;如果是,则结果为 true
 ===strict equality测试两个表达式是否相等,但不执行自动数据转换。
 !==strict inequality测试结果与 strict equality (===) 运算符正好相反。
 注释
 /*..*/block comment delimiter分隔一行或多行脚本注释。
 //line comment delimiter表示脚本注释的开始。
 算术
 +addition加上数字表达式。
 --decrement操作数减去 1。
 /divisionexpression2 除以 expression1
 ++increment将表达式加 1。
 %modulo计算 expression1 除以 expression2 的余数。
 *multiplication将两个数值表达式相乘。
 -subtraction用于取反或减法。
 算术组合赋值
 +=addition assignmentexpression1 赋予 expression1 + expression2 的值。
 /=division assignmentexpression1 赋予 expression1 / expression2 的值。
 %=modulo assignmentexpression1 赋予 expression1 % expression2 的值。
 *=multiplication assignmentexpression1 赋予 expression1 * expression2 的值。
 -=subtraction assignmentexpression1 赋予 expression1 - expression2 的值。
 赋值
 =assignmentexpression2(右侧的操作数)的值赋予 expression1 中的变量、数组元素或属性。
 逻辑
 &&logical AND如果为 false 或可以转换为 false,则返回 expression1,否则返回 expression2
 &&=logical AND assignmentexpression1 赋予 expression1 && expression2 的值。
 !logical NOT对变量或表达式的布尔值取反。
 ||logical OR如果 expression1true 或可转换为 true,则返回该表达式,否则返回 expression2
 ||=logical OR assignmentexpression1 赋予 expression1 || expression2 的值。
运算符详细信息
+ addition 运算符
用法

expression1 + expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

加上数字表达式。两个表达式都为整数时,和为整数;其中一个或两个表达式为浮点数时,和为浮点数。

如果其中一个表达式为字符串,则所有其他表达式都被转换为字符串,然后连接起来,而不是进行求和。否则,如果表达式不是数字,Flash® Player 会将其转换为数字。

操作数
expression1:Number — 要加上的值。
expression2:Number — 要加上的值。

结果
Number — 一个整数或浮点数。

示例
如何使用本示例
下面的语句将整数 2 和 3 相加:
trace(2 + 3); // 5
下面的语句将浮点数 2.5 与 3.25 相加:
trace(2.5 + 3.25); // 5.75
下例说明如果其中一个表达式为字符串,则所有其他表达式都被转换为字符串,然后连接起来:
trace("Number " + 8 + 0); // Number 80
与动态和输入文本字段相关联的变量是字符串数据类型。在以下示例中,变量 deposit 是舞台上的一个输入文本字段。在用户输入存款数目后,该脚本尝试将 deposit 添加到 oldBalance。然而,由于 deposit 的类型是 String,因此脚本连接(合并成一个字符串)变量的值,而不是对它们求和。
var oldBalance:Number = 1345.23; 
var currentBalance = deposit_txt.text + oldBalance; 
trace(currentBalance); 
例如,如果用户在 deposit 文本字段中输入 475,则 trace() 语句将值 4751345.23 发送到撌涑觥泵姘濉若要更正这一点,请使用 Number() 函数将字符串转换为数字,如下所示:
var oldBalance:Number = 1345.23; 
var currentBalance:Number = Number(deposit_txt.text) + oldBalance;
trace(currentBalance);

相关 API 元素

+= addition assignment 运算符  
用法

expression1 += expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

expression1 赋予 expression1 + expression2 的值。例如,以下两个语句的结果是相同的:

x += y; 
x = x + y; 
addition (+) 运算符的所有规则适用于 addition assignment (+=) 运算符。

操作数
expression1:Number — 一个数字。
expression2:Number — 一个数字。

结果
Number — 加法运算的结果。

示例
如何使用本示例
下例说明 addition assignment (+=) 运算符的数值用法:
var x:Number = 5; 
var y:Number = 10; 
x += y; 
trace(x); // 15 

相关 API 元素

[] array access 运算符  
用法

myArray = [a0, a1,...aN]
myArray[i] = value 
myObject[propertyName]

运行时版本: Flash Player 9

用指定的元素(a0 等)初始化一个新数组或多维数组,或者访问数组中的元素。array access 运算符使您能够动态地设置和检索实例、变量和对象的名称。它还使您能够访问对象属性。

用法 1:数组是一个对象,其属性称为元素,这些元素由名为索引的数字逐一标识。创建数组时,需用 array access ([]) 运算符(即中括号)括住元素。一个数组可以包含各种类型的元素。例如,下面这个名为 employee 的数组包含三个元素;第一个元素是一个数字,另外两个元素是字符串(在引号内):

var employee:Array = [15, "Barbara", "Jay"]; 
可以通过嵌套中括号来模拟多维数组。您最多可以嵌套深度为 256 级的数组。以下代码创建一个名为 ticTacToe 且含有三个元素的数组;其中每个元素也是一个具有三个元素的数组:
var ticTacToe:Array = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; 
			
/* Select Debug > List Variables in test mode 
to see a list of the array elements.*/ 
用法 2:用中括号 ([]) 括住每个元素的索引可直接对其进行访问;这样可以向数组添加新元素以及更改或检索现有元素的值。数组中第一个索引始终是 0,如下例所示:
var my_array:Array = new Array(); 
my_array[0] = 15; 
my_array[1] = "Hello"; 
my_array[2] = true; 
可以使用中括号来添加第四个元素,如下例所示:
my_array[3] = "George"; 
可以使用中括号访问多维数组中的元素。第一对括号标识原始数组中的元素,第二对括号标识嵌套数组中的元素。下面的 trace() 语句查找第二个数组(索引 1)的第三个元素(索引 2)。
var ticTacToe:Array = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; 
trace(ticTacToe[1][2]); // 6 
用法 3:可以使用 array access 运算符来动态设置和检索对象的属性值:
var obj:Object = new Object();
obj.prop1 = "foo";
trace(obj["prop" + 1]); // foo
obj.prop2 = "bar";
for (j in obj) {
	trace(obj[j]);
} 
/* Output of for loop: 
foo
bar */

操作数
myArray:Object — 数组的名称。
a0, a1,...aN:Object — 数组中的元素;任何本机类型或对象实例,包括嵌套的数组。
i:Number — 大于等于 0 的整数索引。
myObject:Object — 对象的名称。
propertyName:String — 为对象的属性命名的字符串。

结果
Object

用法 1:对数组的引用。

用法 2:数组中的一个值;本机类型或对象实例(包括 Array 实例)。

用法 3:对象的一个属性;本机类型或对象实例(包括 Array 实例)。


示例
如何使用本示例
下例说明创建新的空 Array 对象的两种方法;第一行使用中括号:
var my_array:Array = []; 
var my_array:Array = new Array(); 

下例创建一个名为 employee_array 且含有三个元素的数组,并更改该数组中的第三个元素。

var employee_array = ["Barbara", "George", "Mary"]; 
trace(employee_array); // Barbara,George,Mary 
employee_array[2] = "Sam"; 
trace(employee_array); // Barbara,George,Sam 
在下例中,计算括号中的表达式,并将结果用作要从 obj 对象中检索的变量的名称:
var obj:Object = new Object();
obj.prop1 = "foo";
obj.prop2 = "bar";

for (var i:int = 1;i < 3;i++) {
	trace(obj["prop"+i]);
}
/* Output of for loop:
foo
bar */ 

相关 API 元素

 as 运算符  
用法

expression as datatype

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

计算第一个操作数指定的表达式是否为第二个操作数指定的数据类型的成员。如果第一个操作数是该数据类型的成员,则结果为第一个操作数。否则,结果为 null 值。

第二个操作数所用表达式的计算结果必须为数据类型。

操作数
expression:* — 要针对指定的数据类型进行检查的值。
datatype:Class — 用于计算 expression 操作数的数据类型。不能使用特殊的 * 类(即无类型)。

结果
Object — 如果 expressiondatatype 中指定的数据类型的成员,结果为 expression。否则,结果为 null 值。

示例
如何使用本示例
以下示例创建了一个名为 myArray 的简单数组,并将 as 运算符用于各种数据类型。
public var myArray:Array = ["one", "two", "three"];
trace(myArray as Array);  // one,two,three
trace(myArray as Number); // null
trace(myArray as int);    // null

相关 API 元素

= assignment 运算符  
用法

expression1 = expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

expression2(右侧的操作数)的值赋予 expression1 中的变量、数组元素或属性。可以按值也可以按引用进行赋值。按值进行赋值将复制 expression2 的实际值并将其存储在 expression1 中。当 expression2 是原始值时(这意味着它的数据类型为 Boolean、Number、int、uint 或 String),使用按值进行赋值。按引用进行赋值将把对 expression2 的引用存储在 expression1 中。按引用进行赋值通常与 new 运算符一起使用。new 运算符将在内存中创建一个对象,并将对内存中该位置的引用分配给一个变量。

注意:在 ActionScript 3.0 中,所有值(包括原始值)都是对象,所有的赋值操作都通过引用来完成,但是原始对象具有一些特殊运算符,使其表现得就像按值赋值一样。

操作数
expression1:* — 变量、数组元素或对象的属性。
expression2:* — 任何类型的值。

结果
Object — 赋予的值 expression2

示例
如何使用本示例
下面的示例使用按值进行赋值,将值 5 赋予变量 z
var z:Number = 5;
下面的示例使用按值进行赋值,将值“hello”赋予变量 z
var x:String;
x = "hello";
下例使用按引用赋值,以创建 moonsOfJupiter 变量,该变量包含对新创建的 Array 对象的引用。然后使用按值进行赋值,将值“Callisto”复制到变量 moonsOfJupiter 所引用的数组的第一个元素:
var moonsOfJupiter:Array = new Array();
moonsOfJupiter[0] = "Callisto";
下例使用按引用进行赋值来创建一个新对象,并将对该对象的引用赋予变量 mercury。然后使用按值进行赋值,将值 3030 赋予 mercury 对象的 diameter 属性:
var mercury:Object = new Object();
mercury.diameter = 3030; // in miles
trace(mercury.diameter); // 3030
下例在上一示例的基础上创建名为 merkurmercury 在德语中的对应词)的变量,并将值 mercury 赋给它。这样,就创建了引用内存中同一对象的两个变量,也就是说您可以使用任一变量访问该对象的属性。然后可以更改 diameter 属性以使用千米而不是英里:
var merkur:Object = mercury;
merkur.diameter = 4878;  // in kilometers
trace(mercury.diameter); // 4878

相关 API 元素

@ attribute identifier 运算符  
用法

 myXML.@attributeName 

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

标识 XML 或 XMLList 对象的属性。例如,myXML。@id 标识 myXML XML 对象的名为 id 的属性。还可使用下列语法访问属性:myXML.attribute("id")myXML["@id"]myXML.@["id"]。建议使用语法 myXML.@id。要返回一个包含所有属性名称的 XMLList 对象,请使用 @*。要返回名称与 ActionScript 保留字相匹配的属性,请使用 attribute() 方法代替 @ 运算符。

操作数
attributeName:* — 属性的名称。

示例
如何使用本示例
第一个示例显示如何使用 @(at 符号)运算符来标识元素的属性:
var myXML:XML = 
	<item id = "42">
		<catalogName>Presta tube</catalogName>
		<price>3.99</price>
	</item>;

trace(myXML.@id); // 42
下一个示例返回所有的属性名:
var xml:XML =<example id='123' color='blue'/>
 var xml2:XMLList = xml.@*;
 trace(xml2 is XMLList); // true
 trace(xml2.length());  // 2
 for (var i:int = 0; i < xml2.length(); i++)
 { 
	trace(typeof(xml2[i]));    // xml
	trace(xml2[i].nodeKind()); // attribute
	trace(xml2[i].name());     // id and color
 } 
下一个示例返回名称与 ActionScript 中的保留字相匹配的属性。不能使用语法 xml.@class(因为 class 是 ActionScript 中的保留字)。需要使用 xml.attribute("class") 语法:
var xml:XML = <example class='123'/>
trace(xml.attribute("class"));

相关 API 元素

& bitwise AND 运算符  
用法

expression1 & expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

expression1expression2 转换为 32 位无符号整数,并对整数参数的每一位执行 Boolean AND 运算。浮点数通过舍去小数点后面的所有位来转换为整数。结果是一个新的 32 位整数。

正整数可转换为无符号的十六进制值,其最大值为 4294967295 或 0xFFFFFFFF;转换大于最大值的值时,会舍去其最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度更高的 2 的补码,然后舍去最高有效位。

由于结果被解释为 32 位 2 的补码数,因此结果将是 -2147483648 到 2147483647 范围中的一个整数。

操作数
expression1:Number — 一个数字或计算结果为数字的表达式。
expression2:Number — 一个数字或计算结果为数字的表达式。

结果
int — 按位运算的结果。

示例
如何使用本示例
下例通过比较数字的位表示形式来针对 13(二进制的 1101) 和 11(二进制的 1011)执行 bitwise AND 运算。所得到的整数由一系列位组成,只有当位于同一位置的操作数的位都是 1 时,所得到整数中的每一位才设置为 1。
var insert:Number = 13; 
var update:Number = 11; 
trace(insert & update); // 9 (or 1001 binary) 
对 13(二进制的 1101)11(二进制的 1011)执行 bitwise AND 的结果是 9,因为这两个数字中只有第一个和最后一个位置具有数字 1。
  1101
& 1011
  ----
  1001

下例说明返回值转换的行为:

trace(0xFFFFFFFF); // 4294967295 
trace(0xFFFFFFFF & 0xFFFFFFFF); // -1 
trace(0xFFFFFFFF & -1); // -1 
trace(4294967295 & -1); // -1 
trace(4294967295 & 4294967295); // -1 

相关 API 元素

&= bitwise AND assignment 运算符  
用法

expression1 &= expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

expression1 赋予 expression1 & expression2 的值。例如,以下两个表达式是等效的:

x &= y; 
x = x & y; 

操作数
expression1:Number — 一个数字或计算结果为数字的表达式。
expression2:Number — 一个数字或计算结果为数字的表达式。

结果
intexpression1 & expression2 的值。

示例
如何使用本示例
下例将值 9 赋予 x
var x:Number = 15; 
var y:Number = 9; 
trace(x &= y); // 9 

相关 API 元素

<< bitwise left shift 运算符  
用法

expression1 << shiftCount

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

expression1shiftCount 转换为 32 位整数,并将 expression1 中的所有位向左移动由 shiftCount 转换所得到的整数指定的位数。因执行此运算而空出的位的位置将用 0 填充,移出左端的位将被舍去。将一个值向左侧移动一位与这个值乘以 2 等效。

浮点数通过舍去小数点后面的所有位来转换为整数。正整数可转换为无符号的十六进制值,其最大值为 4294967295 或 0xFFFFFFFF;转换大于最大值的值时,会舍去其最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度更高的 2 的补码,然后舍去最高有效位。

由于结果被解释为 32 位 2 的补码数,因此结果将是 -2147483648 到 2147483647 范围中的一个整数。

如果结果是负整数,那么,当您试图将结果赋予类型为 uint 的变量时,会出现运行时错误。尽管 ActionScript 没有“unsigned bitwise left shift”运算符,可以使用 uint(expression1 << shiftCount) 来获得同样的效果并避免出现运行时错误:

var num1:uint = 0xFF;
var num2:uint = uint(num1 << 24); // uint() prevents runtime error

操作数
expression1:Number — 要向左移位的数字或表达式。
shiftCount:Number — 转换为介于 0 和 31 之间整数的数字或表达式。

结果
int — 按位运算的结果。

示例
如何使用本示例
在下例中,整数 1 向左移 10 位:
x = 1 << 10
按位左移位运算的结果是 1024。这是因为十进制的 1 等于二进制的 1,二进制的 1 向左移 10 位是二进制的 10000000000,而二进制的 10000000000 就是十进制的 1024:
   00000000001 binary 
<<          10 decimal
--------------
   10000000000 binary equals 1024 decimal 

在下例中,整数 7 向左移 8 位:

x = 7 << 8
按位左移位运算的结果是 1792。这是因为十进制的 7 等于二进制的 111,二进制的 111 向左移 8 位是二进制的 11100000000,而二进制的 11100000000 就是十进制的 1792:
   00000000111 binary 
<<           8 decimal
--------------
   11100000000 binary equals 1792 decimal 

下面的 trace 语句说明已经将位向左移三位:

// 1 binary == 0001 
// 8 binary == 1000 
trace(1 << 3); // 8 

相关 API 元素

<<= bitwise left shift and assignment 运算符  
用法

expression1 <<= expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

执行 bitwise left shift (<<=) 运算,并将内容作为结果存储在 expression1 中。下面的两个表达式是等效的:

A <<= B
A = (A << B)

操作数
expression1:Number — 要向左移位的数字或表达式。
expression2:Number — 转换为介于 0 和 31 之间整数的数字或表达式。

结果
int — 按位运算的结果。

示例
如何使用本示例
在下例中,使用 bitwise left shift and assignment (<<=) 运算符将所有位向左移一位:
var x:Number = 4; 
// Shift all bits one slot to the left. 
x <<= 1; 
trace(x); // 8 
// 4 decimal = 0100 binary 
// 8 decimal = 1000 binary 

相关 API 元素

~ bitwise NOT 运算符  
用法

~expression

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

expression 转换为一个 32 位带符号整数,然后按位对 1 求补。即,将结果中为 0 的每一位设置为 1,并将结果中为 1 的每一位设置为 0。结果是一个带符号的 32 位整数。此运算符也称为对一求补运算符或按位求补运算符。

例如,十六进制值 0x7777 表示为二进制数:

0111011101110111

该十六进制值 ~0x7777 的按位取反的二进制数为:

1000100010001000

在十六进制中,它是 0x8888。因此,~0x7777 就是 0x8888。

按位运算符的最常见用法是提供特征位(为每一位填充一个布尔值)。

浮点数通过舍去小数点后面的所有位来转换为整数。正整数可转换为无符号的十六进制值,其最大值为 4294967295 或 0xFFFFFFFF;转换大于最大值的值时,会舍去其最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度更高的 2 的补码,然后舍去最高有效位。

由于结果被解释为 32 位 2 的补码数,因此结果将是 -2147483648 到 2147483647 范围中的一个整数。

操作数
expression:Number — 要转换的数字。

结果
int — 按位运算的结果。

示例
如何使用本示例
下例说明如何将 bitwise NOT (~) 运算符与特征位结合使用:
var ReadOnlyFlag:int = 0x0001; // defines bit 0 as the read-only flag 
var flags:int = 0; 
trace(flags); 
/* To set the read-only flag in the flags variable, 
   the following code uses the bitwise OR: 
*/
flags |= ReadOnlyFlag; 
trace(flags); 
/* To clear the read-only flag in the flags variable, 
   first construct a mask by using bitwise NOT on ReadOnlyFlag. 
   In the mask, every bit is a 1 except for the read-only flag. 
   Then, use bitwise AND with the mask to clear the read-only flag. 
   The following code constructs the mask and performs the bitwise AND: 
*/ 
flags &= ~ReadOnlyFlag; 
trace(flags); 
// 0 1 0 

相关 API 元素

| bitwise OR 运算符  
用法

expression1 | expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

expression1expression2 转换为 32 位无符号整数,并在 expression1expression2 的对应位为 1 的每个位的位置放置一个 1。

浮点数通过舍去小数点后面的所有位来转换为整数。正整数可转换为无符号的十六进制值,其最大值为 4294967295 或 0xFFFFFFFF;转换大于最大值的值时,会舍去其最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度更高的 2 的补码,然后舍去最高有效位。

由于结果被解释为 32 位 2 的补码数,因此结果将是 -2147483648 到 2147483647 范围中的一个整数。

操作数
expression1:Number — 一个数字。
expression2:Number — 一个数字。

结果
int — 按位运算的结果。

示例
如何使用本示例
下面是一个 bitwise OR (|) 运算的示例:
// 15 decimal = 1111 binary 
var a:Number = 15; 
// 9 decimal = 1001 binary 
var b:Number = 9; 
// 1111 | 1001 = 1111 
trace(a | b); // returns 15 decimal (1111 binary) 
请勿将单个 | (bitwise OR) 和 || (logical OR) 混淆。

相关 API 元素

|= bitwise OR assignment 运算符  
用法

expression1 |= expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

expression1 赋予 expression1 | expression2 的值。例如,下面两个语句是等效的:

x |= y; 
x = x | y; 

操作数
expression1:Number — 要转换的数字。
expression2:Number — 要转换的数字。

结果
int — 按位运算的结果。

示例
如何使用本示例
下例使用 bitwise OR assignment (|=) 运算符:
// 15 decimal = 1111 binary 
var a:Number = 15; 
// 9 decimal = 1001 binary 
var b:Number = 9; 
// 1111 |= 1001 = 1111 
trace(a |= b); // returns 15 decimal (1111 binary) 

相关 API 元素

>> bitwise right shift 运算符  
用法

expression >> shiftCount

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

expressionshiftCount 转换为 32 位整数,并将 expression 中的所有位向右移动由 shiftCount 转换所得到的整数指定的位数。移到右端以外的位将被舍去。如果要保留原始表达式的符号,那么,当 expression 的最高有效位(最左端的位)为 0 时,左侧的位都填补 0;如果最高有效位为 1,左侧的位都填补 1。将一个值右移一位等效于将它除以 2 并舍去余数。

浮点数通过舍去小数点后面的所有位来转换为整数。正整数可转换为无符号的十六进制值,其最大值为 4294967295 或 0xFFFFFFFF;转换大于最大值的值时,会舍去其最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度更高的 2 的补码,然后舍去最高有效位。

由于结果被解释为 32 位 2 的补码数,因此结果将是 -2147483648 到 2147483647 范围中的一个整数。

操作数
expression:Number — 要向右移位的数字或表达式。
shiftCount:Number — 转换为介于 0 和 31 之间整数的数字或表达式。

结果
int — 按位运算的结果。

示例
如何使用本示例
下例将 65535 转换为 32 位整数,然后右移 8 位,结果为十进制值 255:
var a:Number = 65535 >> 8; 
trace(a); // 255
这是由于十进制的 65535 等于二进制的 00000000000000001111111111111111(十六个 0,后跟十六个 1);向右移 8 位将导致至少舍去 8 个最低有效位(最右边的 8 位)。因为 65535 是正数,所以,通过移位而空出的位的位置(最左边的 8 位)将填充 0。结果是二进制的 00000000000000000000000011111111(二十四个 0,后跟八个 1),这表示 32 位整数 255。
    00000000000000001111111111111111 binary (65535 decimal)
>>                                 8 decimal
--------------------
    00000000000000000000000011111111 binary (255 decimal)
下例将 -8 转换为 32 位整数,然后右移 1 位,结果为十进制值 -4:
var a:Number = -8 >> 1;
trace(a); // -4
这是由于十进制的 -8 等于二进制的 11111111111111111111111111111000(二十九个 1,后跟三个 0);向右移一位将导致至少舍去一个最低有效位(最右边的位)。因为 -8 是负数,所以通过移位而空出的位的位置(最左边的位)将填充 1。结果是 11111111111111111111111111111100(三十个 1,后跟两个 0),这表示 32 位整数 -4。
    11111111111111111111111111111000 binary (-8 decimal)
>>							    1 decimal
--------------------
    11111111111111111111111111111100 binary (-4 decimal)

相关 API 元素

>>= bitwise right shift and assignment 运算符  
用法

expression >>= shiftCount

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

执行按位向右移位运算,并将结果存储在 expression 中。

下面的两个语句是等效的:

A >>= B; 
A = (A >> B);

操作数
expression:Number — 要向右移位的数字或表达式。
shiftCount:Number — 转换为介于 0 和 31 之间整数的数字或表达式。

结果
int — 按位运算的结果。

示例
如何使用本示例
下面的代码使用 bitwise right shift and assignment (>>=) 运算符:
function convertToBinary(numberToConvert:Number):String { 
	var result:String = ""; 
	for (var i = 0; i < 32; i++) { 
		// Extract least significant bit using bitwise AND. 
		var lsb:Number = numberToConvert & 1; 
		// Add this bit to the result.
		result = (lsb ? "1" : "0")+result; 
		// Shift numberToConvert right by one bit, to see next bit. 
		numberToConvert >>= 1; 
	} 
	return result; 
} 
trace(convertToBinary(479)); 
// Returns the string 00000000000000000000000111011111. 
// This string is the binary representation of the decimal number 479.

相关 API 元素

>>> bitwise unsigned right shift 运算符  
用法

expression >>> shiftCount

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

此运算符与 bitwise right shift (>>) 运算符基本相同,只是此运算符不保留原始表达式的符号,因为左侧的位始终用 0 填充。

浮点数通过舍去小数点后面的所有位来转换为整数。正整数可转换为无符号的十六进制值,其最大值为 4294967295 或 0xFFFFFFFF;转换大于最大值的值时,会舍去其最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度更高的 2 的补码,然后舍去最高有效位。

由于结果被解释为 32 位无符号整数,因此结果将是 0 到 4294967295 范围中的一个整数。

注意:ActionScript 没有提供补充的“bitwise unsigned left shift”运算符,但是可以使用 uint(expression << shiftCount) 获得相同的效果。

操作数
expression:Number — 要向右移位的数字或表达式。
shiftCount:Number — 转换为介于 0 和 31 之间的整数的数字或表达式。

结果
uint — 按位运算的结果。

示例
如何使用本示例
下面的示例将 -1 转换为 32 位整数并向右移 1 位:
var a:Number = -1 >>> 1; 
trace(a); // 2147483647 
这是因为十进制的 -1 是二进制的 11111111111111111111111111111111(32 个 1),当向右(无符号)移 1 位时,最低有效位(最右端的位)被去掉,而最高有效位(最左端的位)被填补上 0。结果为二进制的 01111111111111111111111111111111,表示 32 位整数 2147483647。

相关 API 元素

>>>= bitwise unsigned right shift and assignment 运算符  
用法

expression >>>= shiftCount

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

执行无符号按位向右移位运算,并将结果存储在 expression 中。下面的两个语句是等效的:

A >>>= B; 
A = (A >>> B); 

操作数
expression:Number — 要向右移位的数字或表达式。
shiftCount:Number — 转换为介于 0 和 31 之间整数的数字或表达式。

结果
uint — 按位运算的结果。

示例
如何使用本示例
下面的示例将 -1 转换为 32 位整数并向右移 1 位:
var a:Number = -1;
a >>>= 1; 
trace(a); // 2147483647 
这是因为十进制的 -1 是二进制的 11111111111111111111111111111111(32 个 1),当向右(无符号)移 1 位时,最低有效位(最右端的位)被去掉,而最高有效位(最左端的位)被填补上 0。结果为二进制的 01111111111111111111111111111111,表示 32 位整数 2147483647。

相关 API 元素

^ bitwise XOR 运算符  
用法

expression1 ^ expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

expression1expression2 转换为 32 位无符号整数,并在 expression1expression2 中为 1(但不是在两者中均为 1)的对应位的每个位的位置返回 1。

浮点数通过舍去小数点后面的所有位来转换为整数。正整数可转换为无符号的十六进制值,其最大值为 4294967295 或 0xFFFFFFFF;转换大于最大值的值时,会舍去其最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度更高的 2 的补码,然后舍去最高有效位。

由于结果被解释为 32 位 2 的补码数,因此结果将是 -2147483648 到 2147483647 范围中的一个整数。

操作数
expression1:Number — 一个数字或计算结果为数字的表达式。
expression2:Number — 一个数字或计算结果为数字的表达式。

结果
int — 按位运算的结果。

示例
如何使用本示例
下面的示例对十进制的 15 和 9 使用 bitwise XOR 运算符,然后将结果赋予变量 a
// 15 decimal = 1111 binary 
// 9 decimal = 1001 binary 
var a:Number = 15 ^ 9; 
trace(a); 
// 1111 ^ 1001 = 0110 
// returns 6 decimal (0110 binary) 

相关 API 元素

^= bitwise XOR assignment 运算符  
用法

expression1 ^= expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

expression1 赋予 expression1 ^ expression2 的值。例如,下面两个语句是等效的:

x ^= y 
x = x ^ y 

操作数
expression1:Number — 一个数字或计算结果为数字的表达式。
expression2:Number — 一个数字或计算结果为数字的表达式。

结果
int — 按位运算的结果。

示例
如何使用本示例
下例说明 bitwise XOR assignment (^=) 运算:
// 15 decimal = 1111 binary 
var a:Number = 15; 
// 9 decimal = 1001 binary 
var b:Number = 9; 
trace(a ^= b); // returns 6 decimal (0110 binary) 

相关 API 元素

/*..*/ block comment delimiter 运算符  
用法

/* comment */
/* comment
   comment */

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

分隔一行或多行脚本注释。出现在 opening delimiter /* 和 closing delimiter */ 之间的字符被 ActionScript 编译器解释为注释并忽略。这些分隔符用于标识多个连续行的注释;对于单行注释,请使用 // 分隔符。

如果省略 closing block comment delimiter (*/) 或者尝试嵌套注释,则将收到错误消息。使用了 opening delimiter (/*) 之后,无论在第一个closing delimiter (*/) 之前放置了多少个 opening delimiter,第一个 closing delimiter 都会结束此注释。

操作数
comment:* — 任何字符。

示例
如何使用本示例
下面的脚本在脚本的开头使用 block comment delimiter:
/* records the X and Y positions of 
the ball and bat movie clips */ 
var ballX:Number = ball_mc._x; 
var ballY:Number = ball_mc._y; 
var batX:Number = bat_mc._x; 
var batY:Number = bat_mc._y; 
下面的嵌套注释尝试将导致一条错误消息:
/* This is an attempt to nest comments. 
/* But the first closing tag will be paired 
with the first opening tag */ 
and this text will not be interpreted as a comment */ 

相关 API 元素

{ } braces (XML) 运算符  
用法

 myXML = <{tagName} {attributeName} = {attributeValue}>{content}

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

计算在 XML 或 XMLList 初始值设定项中使用的表达式。XML 或 XMLList 初始值是赋予类型为 XML 或 XMLList 的变量的字面值。由 XML {} 运算符分隔的表达式可在 XML 或 XMLList 初始值设定项中使用,而不能用在文本名称或值中。可以使用表达式来代替 tagNameattributeNameattributeValuecontent

操作数
myXML:* — 一个 XML 或 XMLList 对象。
tagName:* — 计算结果为 XML 标签名称的表达式。
attributeName:* — 计算结果为 XML 属性名称的表达式。
attributeValue:* — 计算结果为 XML 属性值的表达式。
content:* — 计算结果为 XML 标签内容的表达式。

示例
如何使用本示例
下例说明如何使用 { 和 } 运算符来定义 XML 文本:
var tagname:String = "item"; 
var attributename:String = "id"; 
var attributevalue:String = "5"; 
var content:String = "Chicken"; 
var x:XML = <{tagname} {attributename}={attributevalue}>{content}</{tagname}>; 
trace(x.toXMLString()); // <item id="5">Chicken</item>

相关 API 元素

[ ] brackets (XML) 运算符  
用法

 myXML[expression]

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

访问 XML 或 XMLList 对象的属性或特性。brackets 运算符允许您访问不能用 dot 运算符 (.) 访问的属性名。

操作数
myXML:* — 一个 XML 或 XMLList 对象。
expression:* — 计算结果为 XML 标签名称或属性名称的表达式。

示例
如何使用本示例
以下示例显示如何使用 [] 运算符来访问 XML 属性(该属性无法使用 dot 运算符访问,因为标记名称中包含连字符):
var myXML:XML = <a><foo-bar>44</foo-bar></a>;
trace(myXML["foo-bar"]);

相关 API 元素

, comma 运算符  
用法

(expression1, expression2[, expressionN... ])

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

计算 expression1,然后计算 expression2,依此类推。此运算符主要与 for 循环语句一起使用,并通常与 parentheses () 运算符一起使用。

操作数
expression1:* — 要计算的表达式。
expression2:* — 要计算的表达式。
expressionN:* — 要计算的任意数目的其他表达式。

结果
Object — 所计算表达式的值。

示例
如何使用本示例
以下示例在 for 循环中使用了 comma (,):
for (i = 0, j = 0; i < 3 && j < 3; i++, j+=2) { 
	trace("i = " + i + ", j = " + j); 
} 
// output: 
// i = 0, j = 0 
// i = 1, j = 2
下例使用 comma 运算符但不使用 parentheses 运算符,来说明 comma 运算符的优先级低于 assignment (=) 运算符:
var v:Number = 0; 
v = 4, 5, 6; 
trace(v); // 4 
下例使用 comma 运算符以及括号,并说明 comma 运算符返回最后一个表达式的值:
var v:Number = 0; 
v = (4, 5, 6); 
trace(v); // 6 
下例使用 comma 运算符但不使用括号,并说明 comma 运算符导致按顺序计算所有的表达式。第一个表达式 v + 4 为变量 v 赋值,因为 assignment (=) 运算符的优先级高于 comma 运算符。计算第二个表达式 z++,并将 z 加一。
var v:Number = 0; 
var z:Number = 0; 
v = v + 4 , z++, v + 6; 
trace(v); // 4 
trace(z); // 1 
下例与上一个示例基本相同,但是添加了括号,这会改变运算顺序,以便先计算 comma 运算符再计算 assignment (=) 运算符:
var v:Number = 0; 
var z:Number = 0; 
v = (v + 4, z++, v + 6); 
trace(v); // 6 
trace(z); // 1 

相关 API 元素

+ concatenation 运算符  
用法

expression1 + expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

连接(合并)字符串。如果其中一个表达式为字符串,则所有其他表达式都被转换为字符串,然后连接起来。

如果这两个表达式都是数字,则该运算符充当 addition 运算符。

操作数
expression1:String — 要连接的字符串。
expression2:String — 要连接的字符串。

结果
String — 连接后的字符串。

示例
如何使用本示例
下例连接两个字符串。
var lastName:String = "Cola"; 
var instrument:String = "Drums"; 
trace(lastName + " plays " + instrument); // Cola plays Drums 
下例说明如果其中一个表达式为字符串,则所有其他表达式都被转换为字符串,然后连接起来:
trace("Number " + 8 + 0); // Number 80
下例说明,由于字符串表达式右侧的数值已转换为字符串,因此不对它们进行求和:
var a:String = 3 + 10 + "asdf"; 
trace(a); // 13asdf 
var b:String = "asdf" + 3 + 10; 
trace(b); // asdf310 

相关 API 元素

+ concatenation (XMLList) 运算符  
用法

expression1 + expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

将 XML 或 XMLList 值连接(合并)到 XMLList 对象中。只有当这两个操作数都是 XML 或 XMLList 值时,结果才为 XMLList 对象。

操作数
expression1:* — 一个 XML 或 XMLList 值。
expression2:* — 一个 XML 或 XMLList 值。

结果
XMLList — 连接起来的 XMLList 对象。

示例
如何使用本示例
下例说明如何使用 XMLList (+) (concatenation) 运算符:
var x1:XML = 
		<employee id = "42">
			<firstName>Joe</firstName>
			<lastName>Smith</lastName>
		</employee>;

var x2:XML = 
		<employee id = "43">
			<firstName>Susan</firstName>
			<lastName>Jones</lastName>
		</employee>;

var myXMLList:XMLList = x1 + x2;
	
trace(myXMLList.toXMLString()); 

trace 语句可生成以下输出:

<employee id = "42">
	<firstName>Joe</firstName>
	<lastName>Smith</lastName>
</employee>
<employee id = "43">
	<firstName>Susan</firstName>
	<lastName>Jones</lastName>
</employee>
	

相关 API 元素

+= concatenation assignment 运算符  
用法

expression1 += expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

expression1 赋予 expression1 + expression2 的值。例如,以下两个语句的结果是相同的:

x += y; 
x = x + y;
concatenation (+) 运算符的所有规则均适用于 concatenation assignment (+=) 运算符。请注意,对 TextFieldtext 属性使用连接赋值(即 someTextField.text += moreText)的效率远不如 TextField.appendText(),尤其是对于包含大量内容的 TextField 而言。

操作数
expression1:String — 字符串。
expression2:String — 字符串。

结果
Number — 连接运算的结果。

示例
如何使用本示例
下例使用 += 运算符和字符串表达式:
var x1:String = "My name is "; 
x1 += "Gilbert"; 
trace(x1); // My name is Gilbert 

相关 API 元素

+= concatenation assignment (XMLList) 运算符  
用法

expression1 += expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

对 XMLList 对象 expression1 赋予 expression1 + expression2 的值。例如,以下两个语句的结果是相同的:

x += y; 
x = x + y; 
XMLList concatenation (+) 运算符的所有规则均适用于 XMLList concatenation assignment (+=) 运算符。

操作数
expression1:XMLList — 要向其中添加新值的 XMLList 对象。
expression2:* — 一个 XML 或 XMLList 值。

示例
如何使用本示例
下例说明如何使用 XMLList concatenation assignment (+=) 运算符:
var x1:XML = <location>Athens</location>;	
var x2:XML = <location>Paris</location>;		
myXMLList = x1 + x2;

var x3:XML = <location>Springfield</location>;
myXMLList += x3;
		    
trace(myXMLList.toXMLString());

trace 语句可生成以下输出:

<location>Athens</location>
	
<location>Paris</location>	

<location>Springfield</location>

相关 API 元素

?: conditional 运算符  
用法

expression1 ? expression2 : expression3

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

计算 expression1,如果 expression1 的值为 true,则结果为 expression2 的值;否则结果为 expression3 的值。

操作数
expression1:Boolean — 计算结果为布尔值的表达式;通常是像 x < 5 这样的比较表达式。
expression2:* — 任何类型的值。
expression3:* — 任何类型的值。

结果
*expression2expression3 的值。

示例
如何使用本示例
以下语句将变量 x 的值赋予变量 z,因为第一个表达式的计算结果为 true
var x:Number = 5; 
var y:Number = 10; 
var z = (x < 6) ? x: y; 
trace(z); // returns 5
下面的示例说明简写的条件语句:
var timecode:String = (new Date().getHours() < 11) ? "AM" : "PM"; 
trace(timecode); 
也可以按普通形式编写该条件语句,如下例所示:
if (new Date().getHours() < 11) { 
	var timecode:String = "AM"; 
} else { 
	var timecode:String = "PM"; 
}
trace(timecode); 

-- decrement 运算符  
用法

--expression
expression--

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

操作数减去 1。该操作数可以是变量、数组中的元素或对象的属性。运算符的预先递减格式 --expression expression 减 1,然后返回结果。此运算符的滞后递减格式 (expression--) 将 expression 减 1,然后返回 expression 的初始值(减 1 之前的值)。

操作数
expression:Number — 一个数字或计算结果为数字的变量。

结果
Number — 被递减的值的结果。

示例
如何使用本示例
此运算符的预先递减格式将 x 递减为 2 (x - 1 = 2),并将结果作为 y 返回:
var x:Number = 3; 
var y:Number = --x; // y is equal to 2
此运算符的滞后递减格式将 x 递减为 2 (x - 1 = 2),并将 x 的初始值作为结果 y 返回:
var x:Number = 3; 
var y:Number = x--; // y is equal to 3
下例从 10 到 1 循环,循环的每次迭代将计数器变量 i 减 1:
for (var i = 10; i > 0; i--) { 
	trace(i); 
}

 delete 运算符  
用法

 delete reference

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

破坏由 reference 指定的对象属性;如果在运算完成后该属性不存在,结果为 true,否则结果为 false。如果对不存在的属性或类中未定义的动态属性调用 delete 运算符,则该运算符返回 true

如果无法删除 reference 参数,delete 运算符可能失败并返回 false。不能删除用 var 语句声明的固定属性或变量。固定属性是类定义中的变量或方法。

除非类是运行时添加的动态类,否则不能使用 delete 运算符破坏该类的属性。不能使用 delete 破坏密封类的属性。而应当将该属性设置为 null

注意:虽然无法删除对象,但可以通过删除对某个对象的所有引用来使该对象符合垃圾回收条件。对某个对象最常见的引用就是指向该对象的变量。可以通过将该变量设置为 null 来删除这样的引用。垃圾回收器会删除没有引用的所有对象。

操作数
reference:* — 要消除的属性的名称。

结果
Boolean — 如果删除成功,则返回 true,如果失败,则返回 false

示例
如何使用本示例
下例删除对象的一个属性:
// create the new object "account" 
var account:Object = new Object(); 
// assign property name to the account 
account.name = "Jon"; 
// delete the property 
delete account.name; 
trace(account.name); // undefined

// delete a nonexistent property
var fooDeleted:Boolean = delete account.foo;
trace(fooDeleted); // true

下例删除数组元素的值,但是 length 属性的值不变:

var my_array:Array = new Array(); 
my_array[0] = "abc"; // my_array.length == 1 
my_array[1] = "def"; // my_array.length == 2 
my_array[2] = "ghi"; // my_array.length == 3 
// my_array[2] is deleted, but Array.length is not changed 
delete my_array[2]; 
trace(my_array.length); // 3 
trace(my_array); // abc,def,

下例说明如何将从 delete 返回的布尔值用作以后代码执行的条件。请注意,如果某项已被删除,则对该项再次调用 delete 将返回 false

var my_array:Array = [ "abc", "def", "ghi" ];
var deleteWasSuccessful:Boolean

deleteWasSuccessful = delete my_array[0];
if(deleteWasSuccessful) delete my_array[1];
deleteWasSuccessful = delete my_array[0];
if(deleteWasSuccessful) delete my_array[2];

trace(my_array) // outputs: undefined,undefined,ghi

相关 API 元素

 delete (XML) 运算符  
用法

 delete reference

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

删除由 reference 指定的 XML 元素或属性。

操作数
reference:XMLList — 用来指定要删除的 XML 元素或属性的 XMLList 对象。

结果
Boolean — 始终返回 true 值。结果始终为 true,因为 XMLList 操作数总是指向有效的(虽然可能为空)XMLList 对象。

示例
如何使用本示例
下例说明如何依次删除一个属性、一个元素、多个元素:
 
var x1:XML = <x1>
				<a id = "52">AYY</a>
				<a>AYY 2 </a>
				<b>BEE</b>
				<c>CEE</c>
			</x1>;

trace(x1.toXMLString());
trace("___________");

delete x1.a.@id;

trace(x1.toXMLString());
trace("___________");

delete x1.b;

trace(x1.toXMLString());
trace("___________");

delete x1.a;

trace(x1.toXMLString());

输出如下所示:

<x1>
  <a id="52">AYY</a>
  <a>AYY 2</a>
  <b>BEE</b>
  <c>CEE</c>
</x1>
___________
<x1>
  <a>AYY</a>
  <a>AYY 2</a>
  <b>BEE</b>
  <c>CEE</c>
</x1>
___________
<x1>
  <a>AYY</a>
  <a>AYY 2</a>
  <c>CEE</c>
</x1>
___________
<x1>
  <c>CEE</c>
</x1>

下例说明如何删除某个元素的所有内容(包括属性和子元素),而不删除该元素本身:
 
var xml:XML = 
			<order>
				<item id="121">hamburger</item>
				<item id="122">fries</item>
				<item id="123">chocolate shake</item>
			</order>;
delete xml.item[1].*;
delete xml.item[1].@*;
trace(xml);

此示例的输出如下所示:

<order>
  <tem id="121">hamburger</item>
  <item/>
  <item id="123">chocolate shake</item>
</order>

.. descendant accessor 运算符  
用法

 myXML..childElement1..@attributeName 

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

定位到 XML 或 XMLList 对象的后代元素,或(结合使用 @ 运算符)查找匹配的后代属性。匹配元素或属性不必是 XML 或 XMLList 对象的子级,它们可以位于树中的更低位置(例如,孙级)。结果是 XMLList 对象,因为有多个子元素或子属性可以匹配。

节点在所返回的 XMLList 对象中的顺序由深度优先遍历结果确定。例如,请看以下例子:

var myXML:XML = <a>
			<b>one
				<c> 
					<b>two</b> 
				</c> 
			</b>
			<b>three</b>
		</a>;

trace(myXML..b[0].toXMLString());
trace("______________");
trace(myXML..b[1].toXMLString());
trace("______________");
trace(myXML..b[2].toXMLString());

将生成如下输出:

<b>
  one
  <c>
    <b>two</b>
  </c>
</b>
______________
<b>two</b>
______________
<b>three</b>

若要返回名称与 ActionScript 保留字相匹配的后代,请使用 XML.descendants() 方法,而不要使用 descendant (..) 运算符,如下例所示:

var xml:XML = 
<enrollees>
	<student id="239">
		<class name="Algebra" />
 		<class name="Spanish 2"/>
	</student>
	<student id="206">
		<class name="Trigonometry" />
 		<class name="Spanish 2" />
	</student>
 </enrollees>;
 trace(xml.descendants("class")); 
 

操作数
myXML:Object — XML 或 XMLList 对象。
childElement1_or_attributeName — XML 属性的名称或某个特性的名称。

示例
如何使用本示例
下例说明如何使用 descendant accessor (..) 运算符返回 XML 对象的后代元素以及元素的属性:
var myXML:XML = 
	<employees>
		<employee id = "42">
			<firstName>Billy</firstName>
			<lastName>Einstein</lastName>
		</employee>
		<employee id = "43">
			<firstName>Sally</firstName>
			<lastName>Shostakovich</lastName>
		</employee>
	</employees>
	
trace(myXML..firstName); 
	// <firstName>Billy</firstName>
	// <firstName>Sally</firstName>
				
trace(myXML..@id); //4243

相关 API 元素

/ division 运算符  
用法

expression1 / expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

expression1 除以 expression2。除法运算的结果为双精度浮点数。

操作数
expression:Number — 一个数字或计算结果为数字的变量。

结果
Number — 运算的浮点结果。

示例
如何使用本示例
下例说明被除数是正数、负数或 0 时,除以 0 时得到的不同结果。
trace(3/0);   // Infinity
trace(-3/0);  // -Infinity
trace(0/0);   // NaN

相关 API 元素

/= division assignment 运算符  
用法

expression1 /= expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

expression1 赋予 expression1 / expression2 的值。例如,下面两个语句是等效的:

x /= y; 
x = x / y;

操作数
expression1:Number — 一个数字或计算结果为数字的变量。
expression2:Number — 一个数字或计算结果为数字的变量。

结果
Number — 一个数字。

示例
如何使用本示例
下面的代码说明如何将 division assignment (/=) 运算符与变量和数字结合使用:
var a:Number = 10; 
var b:Number = 2; 
a /= b; trace(a); // 5 

相关 API 元素

。 dot 运算符  
用法

object.property_or_method

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

访问类变量和方法,获取并设置对象属性并分隔导入的包或类。

操作数
object:Object — 类的实例。此对象可以是任何内置 ActionScript 类的实例或者您所定义类的实例。此操作数总是在 dot (.) 运算符的左侧。
property_or_method:* — 与对象相关联的属性或方法的名称。内置类的所有有效方法和属性都会在该类的方法和属性摘要表中列出。此操作数总是在 dot (.) 运算符的右侧。

结果
* — 在点右侧命名的变量、方法或属性。

示例
如何使用本示例
下例在导入 Timer 类时将 dot 运算符用作分隔符。
import flash.utils.Timer;
下例创建一个通用对象并使用 dot 运算符来添加新属性。
var obj:Object = new Object();
obj.propertyA = "hello";
trace(obj.propertyA);  // hello

相关 API 元素

。 dot (XML) 运算符  
用法

myXML.childElement
myXML.@attributeName 

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

定位到 XML 或 XMLList 对象的子元素,或(结合使用 @ 运算符)返回 XML 或 XMLList 对象的属性。返回的对象是 XMLList,因为有多个子元素或子属性可以匹配。

要返回名称与 ActionScript 保留字匹配的元素,请使用 XML.elements() 方法或 XML.descendants() 方法代替 XML dot (.) 运算符,如以下示例所示:

var xml:XML = 
	<student id="206">
		<class name="Trigonometry" />
		<class name="Spanish 2" />
	</student>;
trace(xml.elements("class"));
trace(xml.descendants("class")); 

操作数
myXML:Object — XML 或 XMLList 对象。
childElement:* — XML 属性的名称。
attributeName:* — 属性的名称。

结果
XMLList — 指定的 XMLList。

示例
如何使用本示例
下例说明如何使用 dot (.) 运算符来返回 XML 对象的子元素以及元素的属性:
var myXML:XML = 
	<employee id = "42">
		<firstName>Billy</firstName>
		<lastName>Einstein</lastName>
	</employee>;

trace(myXML.firstName); // Billy
trace(myXML.@id);       // 42

相关 API 元素

== equality 运算符  
用法

expression1 == expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

测试两个表达式是否相等。如果表达式相等,则结果为 true

如果两个操作数的数据类型相匹配,则相等的定义取决于操作数的数据类型:

  • 如果 int、uint 和 Boolean 类型具有相同的值,则将其值视为相等。
  • 值相匹配的两个 Number 被视为相等,除非两个值都为 NaN
  • 如果两个操作数的值均为 nullundefined,则将它们视为相等。
  • 如果字符串表达式具有相同的字符数,而且这些字符都相同,则这些字符串表达式相等。
  • 对于 XML 对象:
    • 如果一个操作数是文本或属性节点,而另一个操作数具有简单的内容,则使用 toString() 方法可将两个操作数转换为字符串,如果生成的字符串相匹配,则将这两个操作数视为相等。
    • 否则,仅当两个对象的限定名、特性和子属性都匹配时,才会被视为相等。
  • 如果 XMLList 对象具有相同数目的属性,并且属性的顺序和值都匹配,则可将其视为相等。
  • 对于 Namespace 对象,如果两个对象的 uri 属性相匹配,则其值被视为相等。
  • 对于 QName 对象,如果两个对象的 uri 属性相匹配,并且两个对象的 localName 属性也相匹配,则其值视为相等。
  • 表示对象、数组和函数的变量按引用进行比较。如果两个这样的变量引用同一个对象、数组或函数,则它们相等。而两个单独的数组即使具有相同数量的元素,也永远不会被视为相等。
如果这两个操作数的数据类型不匹配,则结果为 false,但在以下情况下除外:
  • 操作数的值为 undefinednull,在这种情况下结果为 true
  • 自动数据类型转换将数据类型为 String、Boolean、int、uint 和 Number 的值转换为兼容的类型,并且转换后的值相等,在这种情况下,操作数被视为相等。
  • 一个操作数的类型为 XML,并且包含简单内容 (hasSimpleContent() == true),在使用 toString() 将这两个操作数均转换为字符串后,所生成的字符串相匹配。
  • 一个操作数的类型为 XMLList,并且满足以下任一条件:
    • XMLList 对象的 length 属性是 0,而另一个对象为 undefined
    • XMLList 对象的 length 属性为 1,XMLList 对象的一个元素与另一个操作数相匹配。

操作数
expression1:Object — 一个数字、字符串、布尔值、变量、对象、数组或函数。
expression2:Object — 一个数字、字符串、布尔值、变量、对象、数组或函数。

结果
Boolean — 如果这两个表达式相等,则值为 true,否则为 false

示例
如何使用本示例
下例将 equality (==) 运算符与 if 语句结合使用:
var a:String = "David"
var b:String = "David"; 
if (a == b) { 
	trace("David is David"); 
} 
下例说明在按值进行比较时,equality 运算符执行自动类型转换。字符串值转换为数字:
var a:Number = 5; 
var b:String = "5"; 
trace(a == b); // true
布尔值转换为数字,而 true 转换为 1,false 转换为 0:
var c:Number = 1; 
var d:Boolean = true; 
trace(c == d); // true
var e:Number = 0; 
var f:Boolean = false; 
trace(e == f); // true
但是,字符串值不会转换为布尔值,因此下面的语句返回 false
var g:String = "true";
var h:Boolean = true;
trace(g == h); // false
下面的示例说明按引用进行比较。第一个示例比较两个具有相同长度和元素的数组。对于这两个数组,equality 运算符将返回 false。虽然数组 firstArraysecondArray 看起来相等,但是按引用进行比较要求它们都引用同一个数组。第二个示例创建 thirdArray 变量,该变量与变量 firstArray 指向同一个数组。对于这两个数组,equality 运算符将返回 true,因为这两个变量引用同一个数组。
var firstArray:Array = new Array("one", "two", "three"); 
var secondArray:Array = new Array("one", "two", "three"); 
trace(firstArray == secondArray); // false 
/* Arrays are only considered equal 
if the variables refer to the same array. */
var thirdArray:Array = firstArray; 
trace(firstArray == thirdArray); // true 

相关 API 元素

> greater than 运算符  
用法

expression1 > expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

比较两个表达式,确定 expression1 是否大于 expression2;如果是,则结果为 true。如果 expression1 小于等于 expression2,则结果为 false

如果两个操作数的类型都为 String,则使用字母顺序比较操作数;所有大写字母都排在小写字母的前面。否则,首先将操作数转换为数字,然后进行比较。

操作数
expression1:Object — 一个字符串、整数或浮点数。
expression2:Object — 一个字符串、整数或浮点数。

结果
Boolean — 如果 expression1 大于 expression2,则值为 true;否则值为 false

示例
如何使用本示例
下例说明按字母顺序对字符串进行比较,大写字符排在小写字母的前面:
var a:String = "first";
var b:String = "First";
trace(a > b); // true
下例说明如何将类型为 String 和 Boolean 的值转换为数字:
var c:Number = 5;
var d:String = "4";
trace(c > d); // true

var e: Number = 2;
var f:Boolean = true;
trace(e > f); // true

>= greater than or equal to 运算符  
用法

expression1 >= expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

比较两个表达式,确定 expression1 是大于等于 expression2(值为 true)还是 expression1 小于 expression2(值为 false)。

操作数
expression1:Object — 一个字符串、整数或浮点数。
expression2:Object — 一个字符串、整数或浮点数。

结果
Boolean — 如果 expression1 大于等于 expression2,则值为 true;否则值为 false

示例
如何使用本示例
在下面的示例中,greater than or equal to (>=) 运算符用于确定当前小时是否大于或等于 12:
if (new Date().getHours() >= 12) { 
	trace("good afternoon"); 
} else { 
	trace("good morning"); 
}

相关 API 元素

 in 运算符  
用法

expression1 in expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

计算属性是否为特定对象的一部分。若要使用 in 运算符,请将属性名指定为第一个操作数,并将对象指定为第二个操作数。如果指定的对象包含此类属性,则结果为 true;否则结果为 false

如果指定的对象是 Array 对象,则可以使用 in 运算符来检查特定的索引编号是否有效。如果向第一个操作数传递整数,那么,当索引位于有效的索引编号范围内时,结果为 true,否则为 false

结果
Boolean — 如果 expression1 是由 expression2 表示的对象的属性,则值为 true,否则为 false

示例
如何使用本示例
以下示例使用 in 运算符说明 PI 是 Math 对象的属性,但 myProperty 却不是。
trace("PI" in Math);         // true
trace("myProperty" in Math); // false

以下示例使用 in 运算符说明数字 0、1 和 2 是 myArray 对象中的有效索引编号,但数字 3 却不是。

public var myArray:Array = ["zero", "one", "two"];
trace(0 in myArray); // true
trace(1 in myArray); // true
trace(2 in myArray); // true
trace(3 in myArray); // false

相关 API 元素

++ increment 运算符  
用法

++expression
 expression++

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

将表达式加 1。该表达式可以是变量、数组中的元素或对象的属性。运算符的预先递增格式 (++expression) 将 expression 加 1,然后返回结果。此运算符的滞后递增格式 (expression++) 将 expression 加 1,然后返回 expression 的初始值(加 1 之前的值)。

操作数
expression:Number — 一个数字或计算结果为数字的变量。

结果
Number — 递增的结果。

示例
如何使用本示例
下例将 ++ 用作 while 循环中的预先递增运算符,并说明添加到数组中的值是已经递增的值:
var preInc:Array = new Array(); 
var i:int = 0; 
while (i < 10) { 
    preInc.push(++i); 
} 
trace(preInc); // 1,2,3,4,5,6,7,8,9,10 
下例将 ++ 用作 while 循环中的滞后递增运算符,并说明添加到数组中的值是初始值:
 
var postInc:Array = new Array(); 
var i:int = 0; 
while (i < 10) { 
   postInc.push(i++); 
} 
trace(postInc); // 0,1,2,3,4,5,6,7,8,9 
下面的示例将 ++ 用作滞后递增运算符,以使while循环运行五次:
var i:int = 0; 
while (i++ < 5) { 
	trace("this is execution " + i); 
} 
/* output: 
   this is execution 1 
   this is execution 2 
   this is execution 3 
   this is execution 4 
   this is execution 5 
*/

!= inequality 运算符  
用法

expression1 != expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

测试结果是否与 equality (==) 运算符正好相反。如果 expression1 等于 expression2,则结果为 false。与 equality (==) 运算符一样,相等的定义取决于所比较的数据类型。

如果两个操作数的数据类型相匹配,则相等的定义取决于操作数的数据类型:

  • 如果 int、uint 和 Boolean 类型具有相同的值,则将其值视为相等。
  • 值相匹配的两个 Number 被视为相等,除非两个值都为 NaN
  • 如果两个操作数的值均为 nullundefined,则将它们视为相等。
  • 如果字符串表达式具有相同的字符数,而且这些字符都相同,则这些字符串表达式相等。
  • 对于 XML 对象:
    • 如果一个操作数是文本或属性节点,而另一个操作数具有简单的内容,则使用 toString() 方法可将两个操作数转换为字符串,如果生成的字符串相匹配,则将这两个操作数视为相等。
    • 否则,仅当两个对象的限定名、特性和子属性都匹配时,才会被视为相等。
  • 如果 XMLList 对象具有相同数目的属性,并且属性的顺序和值都匹配,则可将其视为相等。
  • 对于 Namespace 对象,如果两个对象的 uri 属性相匹配,则其值被视为相等。
  • 对于 QName 对象,如果两个对象的 uri 属性相匹配,并且两个对象的 localName 属性也相匹配,则其值视为相等。
  • 表示对象、数组和函数的变量按引用进行比较。如果两个这样的变量引用同一个对象、数组或函数,则它们相等。而两个单独的数组即使具有相同数量的元素,也永远不会被视为相等。
如果这两个操作数的数据类型不匹配,则 inequality (!=) 运算符返回 true,但在以下情况下除外:
  • 操作数的值为 undefinednull,在这种情况下结果为 true
  • 自动数据类型转换将数据类型为 String、Boolean、int、uint 和 Number 的值转换为兼容的类型,并且转换后的值相等,在这种情况下,操作数被视为相等。
  • 一个操作数的类型为 XML,并且包含简单内容 (hasSimpleContent() == true),在使用 toString() 方法将这两个操作数均转换为字符串后,所生成的字符串相匹配。
  • 一个操作数的类型为 XMLList,并且满足以下任一条件:
    • XMLList 对象的 length 属性是 0,而另一个对象为 undefined
    • XMLList 对象的 length 属性为 1,XMLList 对象的一个元素与另一个操作数相匹配。

操作数
expression1:Object — 数字、字符串、布尔值、变量、对象、数组或函数。
expression2:Object — 数字、字符串、布尔值、变量、对象、数组或函数。

结果
Boolean — 如果表达式不相等,则值为 true,否则为 false

示例
如何使用本示例
下面的示例说明 inequality (!=) 运算符的结果:
trace(5 != 8); // true 
trace(5 != 5); // false 
以下示例说明在 if 语句中使用 inequality != 运算符:
var a:String = "David";
var b:String = "Fool";
if (a != b) { 
	trace("David is not a fool"); 
}
下面的示例说明按引用比较两个函数:
var a:Function = function() { trace("foo"); }; 
var b:Function = function() { trace("foo"); }; 
a(); // foo 
b(); // foo 
trace(a != b); // true 
a = b; 
a(); // foo 
b(); // foo 
trace(a != b); // false
下面的示例说明按引用比较两个数组:
var a:Array = [ 1, 2, 3 ]; 
var b:Array = [ 1, 2, 3 ]; 
trace(a);      // 1,2,3 
trace(b);      // 1,2,3 
trace(a != b); // true 
a = b; 
trace(a);      // 1,2,3 
trace(b);      // 1,2,3 
trace(a != b); // false

相关 API 元素

 instanceof 运算符  
用法

expression instanceof function

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

计算表达式的原型链是否包括 function 的原型对象。之所以包括 instanceof 运算符,是为了与 ECMAScript 3.0 版保持向后兼容,它对于选择用带构造函数的基于原型的继承来代替类继承的高级程序员可能非常有用。

若要检查对象是否为特定数据类型的成员,请使用 is 运算符。

当与类一起使用时,instanceof 运算符类似于 is 运算符,因为类的原型链包括所有其超类。但是,原型链上不包括接口,所以当 instanceof 运算符与接口一起使用时,结果始终为 false,而 is 运算符的结果为 true(如果对象属于实现特定接口的类)。

注意:ActionScript 中的 is 运算符与 Java 中的 instanceof 运算符等效。

操作数
expression:Object — 要对其进行计算的包含原型链的对象。
function:Object — 一个函数对象(或类)。

结果
Boolean — 如果 expression 的原型链包括 function 的原型对象,则返回 true,否则返回 false

示例
如何使用本示例
以下示例创建了 Sprite 类的一个实例,名为 mySprite,并使用 instanceof 运算符测试 mySprite 的原型链是否包括 Sprite 和 DisplayObject 类的原型对象。对于 Sprite 类和 DisplayObject 类来说,结果为 true,因为 Sprite 和 DisplayObject 的原型对象位于 mySprite 的原型链上。
var mySprite:Sprite = new Sprite();
trace(mySprite instanceof Sprite);        // true
trace(mySprite instanceof DisplayObject); // true
下例使用 IBitmapDrawable 接口说明 instanceof 运算符不能与接口一起使用。由于 DisplayObject 类是实现 IBitmapDrawable 接口的 Sprite 类的超类,因此 is 运算符的计算结果为 true
var mySprite:Sprite = new Sprite();
trace(mySprite instanceof IBitmapDrawable); // false
trace(mySprite is IBitmapDrawable);         // true

相关 API 元素

 is 运算符  
用法

expression1 is expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

计算对象是否与特定数据类型、类或接口兼容。使用 is 运算符代替 instanceof 运算符进行类型比较。还可以使用 is 运算符来检查对象是否实现某个接口。

结果
Boolean — 如果 expression1expression2 中指定的数据类型、类或接口兼容,则为 true,否则为 false

示例
如何使用本示例
以下示例创建了 Sprite 类的一个实例,名为 mySprite,并使用 is 运算符测试 mySprite 是否为 Sprite 和 DisplayObject 类的实例,以及它是否实现 IEventDispatcher 接口。
import flash.display.*;
import flash.events.IEventDispatcher;

var mySprite:Sprite = new Sprite();
trace(mySprite is Sprite);           // true
trace(mySprite is DisplayObject);    // true
trace(mySprite is IEventDispatcher); // true

相关 API 元素

< less than 运算符  
用法

expression1 < expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

比较两个表达式,确定 expression1 是否小于 expression2;如果是,则结果为 true。如果 expression1 大于等于 expression2,则结果为 false

如果两个操作数的类型都为 String,则使用字母顺序比较操作数;所有大写字母都排在小写字母的前面。否则,首先将操作数转换为数字,然后进行比较。

操作数
expression1:Object — 一个字符串、整数或浮点数。
expression2:Object — 一个字符串、整数或浮点数。

结果
Boolean — 如果 expression1 小于 expression2,则值为 true;否则值为 false

示例
如何使用本示例
以下示例说明为数值和字符串比较返回的 truefalse 结果:
trace(5 < 10); // true 
trace(2 < 2);            // false 
trace(10 < 3);           // false 
trace("Allen" < "Jack"); // true 
trace("Jack" < "Allen"); // false 
trace("11" < "3");       // true 
trace("11" < 3);         // false (numeric comparison) 
trace("C" < "abc");      // true 
trace("A" < "a");        // true 

<= less than or equal to 运算符  
用法

expression1 <= expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

比较两个表达式,并确定 expression1 是否小于等于 expression2;如果是,则结果为 true。如果 expression1 大于 expression2,则结果为 false

如果两个操作数的类型都为 String,则使用字母顺序比较操作数;所有大写字母都排在小写字母的前面。否则,首先将操作数转换为数字,然后进行比较。

操作数
expression1:Object — 一个字符串、整数或浮点数。
expression2:Object — 一个字符串、整数或浮点数。

结果
Boolean — 如果 expression1 小于等于 expression2,则值为 true;否则值为 false

示例
如何使用本示例
以下示例说明为数值和字符串比较返回的 truefalse 结果:
trace(5 <= 10); // true 
trace(2 <= 2);            // true 
trace(10 <= 3);           // false 
trace("Allen" <= "Jack"); // true 
trace("Jack" <= "Allen"); // false 
trace("11" <= "3");       // true 
trace("11" <= 3);         // false (numeric comparison) 
trace("C" <= "abc");      // true 
trace("A" <= "a");        // true 

// line comment delimiter 运算符  
用法

// 注释

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

表示脚本注释的开始。出现在 comment delimiter (//) 和行结束字符之间的字符被解释为注释并被忽略。此分隔符用于单行注释;对于多个连续行的注释,请使用 /**/ 分隔符。

操作数
comment:* — 任何字符。

示例
如何使用本示例
下例说明单行注释:
// Any text following a line comment delimiter is ignored during compilation

相关 API 元素

&& logical AND 运算符  
用法

expression1 && expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

如果为 false 或可以转换为 false,则返回 expression1,否则返回 expression2。可以转换为 false 的值的示例有 0、NaNnullundefined。如果将函数调用用作 expression2,则当 expression1 计算结果为 false 时,将不调用该函数。

如果这两个操作数的类型均为 Boolean,则仅当两个操作数均为 true 时,结果才为 true,如下表所示:

表达式

计算结果

true && true

true

true && false

false

false && false

false

false && true

false

操作数
expression1:* — 任何类型的值或表达式。
expression2:* — 任何类型的表达式的值。

结果
* — 如果这两个操作数的类型均为 Boolean,则结果为布尔值。否则,结果为任一表达式的值。

示例
如何使用本示例
下面的示例使用 logical AND (&&) 运算符执行一个测试,确定游戏者是否已经赢得游戏。在游戏过程中,当游戏者赢得一轮或者得到计分点时,就会更新变量 turnsscore。在 3 轮之内游戏者的得分达到或超过 75 时,脚本就会输出“You Win the Game!”。
var turns:Number = 2; 
var score:Number = 77; 
if ((turns <= 3) && (score >= 75)) { 
	trace("You Win the Game!"); 
} else { 
	trace("Try Again!"); 
} 

相关 API 元素

&&= logical AND assignment 运算符  
用法

expression1 &&= expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

expression1 赋予 expression1 && expression2 的值。例如,下面两个语句是等效的:

x &&= y; 
x = x && y; 

操作数
expression1:* — 任何类型的值。
expression2:* — 任何类型的值。

结果
* — 如果这两个操作数都是 Boolean 数据类型的成员,则结果为布尔值。否则,结果将为任一表达式的值。

示例
如何使用本示例
在以下示例中,除非 myVar 变量为 null,否则 myVar 更改为 XML 标签。在本示例中,只要 myVar 变量的计算结果不是 false,该变量就会修改。该技术利用以下算法:如果 expression1 的计算结果为 false,则 logical AND && 运算符返回值 expression1,否则返回值 expression2。如果 myVar 已经包含求值结果为 true 的值,则会修改 myVar 以模拟 XML 标签。但是,如果 myVar 包含求值结果为 false 的值(如 null""(空字符串)和 undefined 等值),则不更改 myVar
var myVar:String = 'tag';
			myVar &&= "<" + myVar + "/>";
			trace (myVar); // output: <tag/>
使用 if 语句可以获得同样的效果,如下例所示:
var myVar:String = 'tag';
			if (myVar != '') {
			  myVar = "<" + myVar + "/>";
			}
			trace (myVar); // output: <tag/>
使用 if 语句的好处是代码较易读,而使用 logical AND assignment (&&=) 运算符的好处是不必指定给定数据类型的确切默认值。

相关 API 元素

! logical NOT 运算符  
用法

!expression

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

对变量或表达式的布尔值取反。如果 expression 是具有绝对值或经过转换的值 true 变量,则值 !expressionfalse。如果表达式 x && y 的计算结果为 false,则表达式 !(x && y) 的计算结果为 true

下面的表达式说明了使用 logical NOT (!) 运算符的结果:

  • !true 返回 false
  • !false 返回 true

操作数
expression:Boolean — 计算结果为布尔值的表达式或变量。

结果
Boolean — 逻辑运算的布尔结果。

示例
如何使用本示例
在以下示例中,变量 happy 设置为 falseif 条件计算 !happy 条件,如果后者为 true,则 trace() 语句输出一个字符串。
var happy:Boolean = false; 
if (!happy) { 
	trace("don't worry, be happy"); // don't worry, be happy 
} 
将执行 trace 语句,因为 !falsetrue

相关 API 元素

|| logical OR 运算符  
用法

expression1 || expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

如果 expression1true 或可转换为 true,则返回该表达式,否则返回 expression2。如果将函数调用用作 expression2,那么当 expression1 的计算结果为 true 时,则不会调用该函数。

如果这两个操作数的类型均为 Boolean,那么,当这两个表达式或其中一个表达式为 true 时,结果为 true;只有当这两个表达式均为 false 时,结果才为 false,如下表中所示:

表达式

计算结果

true || true

true

true || false

true

false || false

false

false || true

true

操作数
expression1:* — 任何类型的值。
expression2:* — 任何类型的值。

结果
* — 如果这两个操作数都是 Boolean 数据类型的成员,则结果为布尔值。否则,结果将为任一表达式的值。

示例
如何使用本示例
以下示例在 if 语句中使用 logical OR (||) 运算符。第二个表达式的计算结果为 true,因此最终结果为 true
var a:Number = 10; 
var b:Number = 250; 
var start:Boolean = false; 
if ((a > 25) || (b > 200) || (start)) { 
    trace("the logical OR test passed"); // the logical OR test passed 
} 
因为 if 语句中的条件之一为 true (b > 200),所以将出现消息“logical OR 测试通过”。

下例说明如何将函数调用作为第二个操作数会怎样导致意外的结果。如果运算符左侧的表达式的计算结果为 true,则返回该结果,而不计算右侧的表达式(不调用函数 fx2())。

function fx1():Boolean { 
	trace("fx1 called"); 
	return true; 
} 
function fx2():Boolean { 
	trace("fx2 called"); 
	return true; 
} 
if (fx1() || fx2()) { 
	trace("IF statement entered");
}

相关 API 元素

||= logical OR assignment 运算符  
用法

expression1 ||= expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

expression1 赋予 expression1 || expression2 的值。例如,下面两个语句是等效的:

x ||= y; 
x = x || y; 

操作数
expression1:* — 任何类型的值。
expression2:* — 任何类型的值。

结果
* — 如果这两个操作数都是 Boolean 数据类型的成员,则结果为布尔值。否则,结果将为任一表达式的值。

示例
如何使用本示例
下面的示例为先前已声明的变量 myVar 分配默认值。该技术利用以下原理:如果 expression1 的计算结果为 true,logical OR (||) 运算符返回 expression1 的值,否则返回 expression2 的值。如果 myVar 已包含计算结果为 true 的值,则不更改 myVar。但是,如果 myVar 包含计算结果为 false 的值(例如 null""(空字符串)和 undefined 等值),将为 myVar 分配值 "default"
myVar ||= "default";

相关 API 元素

% modulo 运算符  
用法

expression1 % expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

计算 expression1 除以 expression2 的余数。如果有任一操作数不是数字值,则 modulo (%) 运算符会尝试将它转换为数字。

模运算结果的符号与被除数(第一个数字)的符号相匹配。例如,-4 % 3-4 % -3 的计算结果都为 -1

操作数
expression1:Number — 一个数字或计算结果为数字的表达式。只包含数字字符的字符串的计算结果为一个数字。
expression2:Number — 一个数字或计算结果为数字的表达式。只包含数字字符的字符串的计算结果为一个数字。

结果
Number — 算术运算的结果。

示例
如何使用本示例
下面的数值示例使用 modulo (%) 运算符:
trace(12 % 5);    // 2 
trace(4.3 % 2.1); // 0.0999999999999996 
trace(4 % 4);     // 0 
第一个 trace 返回 2,而不是 12/5 或 2.4,因为 modulo (%) 运算符仅返回余数。第二个 trace 返回 0.0999999999999996 而不是预期的 0.1,因为在二进制计算中对浮点数精度有限制。

相关 API 元素

%= modulo assignment 运算符  
用法

expression1 %= expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

expression1 赋予 expression1 % expression2 的值。下面的两个语句是等效的:

x %= y; 
x = x % y; 

操作数
expression1:Number — 一个数字或计算结果为数字的表达式。
expression2:Number — 一个数字或计算结果为数字的表达式。

结果
Number — 算术运算的结果。

示例
如何使用本示例
下面的示例将值 4 赋予变量 a
var a:Number = 14; 
var b:Number = 5; 
a %= b;
trace(a); // 4 

相关 API 元素

* multiplication 运算符  
用法

expression1 * expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

将两个数值表达式相乘。如果两个表达式都是整数,则积为整数。如果其中任何一个或两个表达式是浮点数,则积为浮点数。

操作数
expression1:Number — 一个数字或计算结果为数字的表达式。
expression2:Number — 一个数字或计算结果为数字的表达式。

结果
Number — 一个整数或浮点数。

示例
如何使用本示例
下面的语句将整数 2 与 3 相乘,结果为整数 6:
trace(2*3); // 6 
下面的语句将浮点数 2.0 与 3.1416 相乘,结果为浮点数 6.2832:
trace(2.0 * 3.1416); // 6.2832 

*= multiplication assignment 运算符  
用法

expression1 *= expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

expression1 赋予 expression1 * expression2 的值。例如,以下两个表达式是等效的:

x *= y 
x = x * y 

操作数
expression1:Number — 一个数字或计算结果为数字的表达式。
expression2:Number — 一个数字或计算结果为数字的表达式。

结果
Numberexpression1 * expression2 的值。如果表达式不能转换为数值,则返回 NaN(非数字)。

示例
如何使用本示例
下面的示例将值 50 赋予变量 a
var a:Number = 5; 
var b:Number = 10; 
trace(a *= b); // 50 
以下示例的第二行和第三行计算等号右侧的表达式,然后将结果赋给 cd
var i:Number = 5; 
var c:Number = 4 - 6; 
var d:Number = i + 2; 
trace(c *= d); // -14 

相关 API 元素

:: name qualifier 运算符  
用法

namespace::property
namespace::method()
namespace::xmlObject.property
namespace::xmlObject.@attribute

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

标识属性、方法或 XML 属性或特性的命名空间。

操作数
namespace:Object — 用来进行标识的命名空间。
propertyName:Object — 要标识的属性、方法、XML 属性或 XML 特性。

示例
如何使用本示例
下例使用 :: 运算符来标识两个不同命名空间中的两种同名方法:
public class NamespaceExample extends Sprite {
	public namespace French;
	public namespace Hawaiian;
	public function NamespaceExample() {
		trace(Hawaiian::hello()); // aloha
		trace(French::hello()); // bonjour
	}
    Hawaiian function hello():String {
        return "aloha";
    }

    French function hello():String { 
        return "bonjour";
    }
}
下例使用 :: 运算符来标识具有指定命名空间的 XML 属性:
var soap:Namespace = new Namespace("http://schemas.xmlsoap.org/wsdl/soap/");
var w:Namespace = new Namespace("http://weather.example.org/forecast");
var myXML:XML = 
	<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> 
	 <soap:Body>
	  <w:forecast xmlns:w="http://weather.example.org/forecast">
	   <w:city>Quito</w:city>
	   <w:country>Ecuador</w:country>
	   <date>2006-01-14</date>
	  </w:forecast>
	  </soap:Body>
	</soap:Envelope>;
	
trace(myXML.soap::Body.w::forecast.w::city); // Quito

相关 API 元素

 new 运算符  
用法

new constructor(parameters)

运行时版本: Flash Player 5

对类实例进行实例化。new 运算符可以与类型为 Class 的变量一起用来创建类的实例。new 运算符通常与 class 对象一起用来创建类的实例。例如,语句 new Sprite() 创建 Sprite 类的实例。

new 运算符还可用来将类与嵌入的资源(这是编译为 SWF 文件的外部对象,如图像、声音或字体)。每个嵌入资源都由一个唯一的嵌入资源类表示。若要访问嵌入资源,必须使用 new 运算符来实例化与其关联的类。因此,可以调用嵌入资源类的相应方法和属性来处理嵌入资源。

如果您喜欢使用 Function 对象(而不是 class 关键字)来定义类,则可以使用 new 运算符来基于构造函数创建对象。请勿将类的构造函数与构造函数方法混淆。构造函数是用 function 关键字定义的 Function 对象,但它不属于类定义。如果您使用构造函数来创建对象,则必须使用原型继承来代替类继承。

操作数
constructor:* — 一个类、函数或变量,可用来保存类型为 Class 的值。
parameters:* — 一个或多个用逗号分隔的参数。

示例
如何使用本示例
以下示例创建 Book 类,并使用 new 运算符创建对象 book1book2
class Book {
  var bName:String;
  var bPrice:Number;
  
  public function Book(nameParam:String, priceParam:Number){
    bName = nameParam;
    bPrice = priceParam;
  }
}

var book1:Book = new Book("Confederacy of Dunces", 19.95);
var book2:Book = new Book("The Floating Opera", 10.95);
trace(book1); // [object Book]
下例使用 new 运算符来创建具有 18 个元素的 Array 类的实例:
var golfCourse:Array = new Array(18);

相关 API 元素

{} object initializer 运算符  
用法

object = {name1 : value1, name2 : value2,... nameN : valueN}

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

创建一个新对象,并用指定的 namevalue 属性对初始化该对象。使用此运算符的效果与使用 new Object 语法并用 assignment 运算符填充属性对的效果相同。新建对象的原型通常命名为 Object 对象。

此运算符也用于标记与流控制语句(forwhileifelseswitch)和函数相关联的连续代码块。

操作数
object:Object — 要创建的对象。
name1,2,...N:Object — 属性名。
value1,2,...N:Object — 每个 name 属性的对应值。

结果
Object — 一个 Object 对象。

示例
如何使用本示例
以下代码的第一行使用 object initializer ({}) 运算符创建一个空对象;第二行使用构造函数创建一个新对象:
var object:Object = {}; 
var object:Object = new Object(); 
以下示例创建一个对象 account,并用附带的值初始化属性 nameaddresscitystatezipbalance
var account:Object = {name:"Adobe Systems, Inc.", address:"601 Townsend Street", city:"San Francisco", state:"California", zip:"94103", balance:"1000"}; 
for (i in account) { 
	trace("account."+i+" = "+account[i]); 
} 
下面的示例说明数组和对象初始值设定项可以如何相互嵌套:
var person:Object = {name:"Gina Vechio", children:["Ruby", "Chickie", "Puppa"]}; 
下面的代码使用上述示例中的信息,并使用构造函数得到相同的结果:
var person:Object = new Object(); 
person.name = "Gina Vechio"; 
person.children = new Array(); 
person.children[0] = "Ruby"; 
person.children[1] = "Chickie"; 
person.children[2] = "Puppa"; 

相关 API 元素

() parentheses 运算符  
用法

(expression1[, expression2])
(expression1, expression2)
function(parameter1,..., parameterN) 

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

对一个或多个参数执行分组运算,执行表达式的顺序计算,或者括住一个或多个参数并将它们作为参量传递给括号前面的函数。

用法 1:控制运算符的执行顺序。括号覆盖正常的优先级顺序,从而导致先计算括号内的表达式。如果括号是嵌套的,则先计算最里面括号中的内容,然后计算较靠外括号中的内容。

用法 2:按顺序计算用逗号分隔的一系列表达式,并返回最终表达式的结果。

用法 3:括住一个或多个参数并将它们传递给括号前面的函数。

操作数
expression1:Object — 一个表达式,可以包括数字、字符串、变量或文本。
expression2:Object — 一个表达式,可以包括数字、字符串、变量或文本。
function:Function — 要对括号中的内容执行的函数。
parameter1...parameterN:Object — 一系列参数,在将结果作为参数传递给括号外的函数之前执行这些参数。

示例
如何使用本示例
用法 1:下列语句说明如何使用括号来控制表达式的执行顺序:
trace((2 + 3) * (4 + 5)); // 45 
trace(2 + (3 * (4 + 5))); // 29
trace(2 + (3 * 4) + 5);   // 19
trace(2 + (3 * 4) + 5);   // 19
用法 2:以下示例计算函数 foo(),再计算函数 bar(),然后返回表达式 a + b 的结果:
var a:Number = 1; 
var b:Number = 2; 
function foo() { 
  a += b; 
} 
function bar() { 
  b *= 10; 
} 
trace((foo(), bar(), a + b)); // 23 
用法 3:以下示例说明将括号与函数结合使用的方法:
var today:Date = new Date(); 
trace(today.getFullYear()); // outputs current year 
function traceParameter(param):void { 
  trace(param); 
} 
traceParameter(2 * 2); // 4 

相关 API 元素

( ) parentheses (XML) 运算符  
用法

myXML.(expression)

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

计算 ECMAScript for XML (E4X) XML 构造中的表达式。例如,myXML.(lastName == "Smith") 标识名为 lastName 且值为 "Smith" 的 XML 元素。结果为 XMLList 对象。

操作数
myXML:* — 一个 XML 或 XMLList 对象。
expression:* — 用来定义匹配元素的表达式。

结果
XMLList — 由括号指定的 XMLList。

示例
如何使用本示例
下例说明如何使用括号来标识元素和属性:
var myXML:XML = 
	<employees>
		<employee id = "42">
			<firstName>Joe</firstName>
			<lastName>Smith</lastName>
		</employee>
		<employee id = "43">
			<firstName>Susan</firstName>
			<lastName>Jones</lastName>
		</employee>
		<employee id = "44">
			<firstName>Anne</firstName>
			<lastName>Smith</lastName>
		</employee>
	</employees>;
	
trace(myXML.employee.(lastName == "Smith").@id.toXMLString()); 
	// 42
	// 44
                
trace(myXML.employee.(Number(@id) > 42).@id.toXMLString()); 
	// 43
	// 44

相关 API 元素

/ RegExp delimiter 运算符  
用法

/pattern/flags

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

如果用在字符之前和之后,则表示字符具有字面值,并被视作一个正则表达式 (RegExp),而不是一个变量、字符串或其他 ActionScript 元素。但是,请注意,两个连续的正斜杠字符 (//) 表示注释开始。

操作数
pattern:String — 一个或一系列用来定义正则表达式模式的字符。
flags:String — 零个或多个下列字符组成的序列:g(表示 global 标志)、i(表示 ignoreCase 标志)、s(表示 dotall 标志)和 x(表示 extended 标志)。

示例
如何使用本示例
下例使用正斜杠字符 (/) 设置类型为 RegExp 的变量的值(为了在匹配时忽略大小写,设置了 i 标志)。
var myRegExp:RegExp = /foo-\d+/i; 
trace(myRegExp.exec("ABC Foo-32 def.")); // Foo-32 

相关 API 元素

=== strict equality 运算符  
用法

expression1 === expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

测试两个表达式是否相等,但不执行自动数据转换。如果两个表达式(包括它们的数据类型)相等,则结果为 true

strict equality (===) 运算符与 equality (==) 运算符在以下三个方面相同:

  • 数字和布尔值按值进行比较,如果它们具有相同的值,则视为相等。
  • 如果字符串表达式具有相同的字符数,而且这些字符都相同,则这些字符串表达式相等。
  • 表示对象、数组和函数的变量按引用进行比较。如果两个这样的变量引用同一个对象、数组或函数,则它们相等。而两个单独的数组即使具有相同数量的元素,也永远不会被视为相等。
strict equality (===) 运算符与 equality (==) 运算符仅在下列两个方面不同:
  • strict equality 运算符仅针对数字类型(Number、int 和 uint)执行自动数据转换,而 equality 运算符 () 针对所有的原始数据类型执行自动数据转换。
  • 当比较 nullundefined 时,equality 运算符将返回 false
在涉及到原始值(例如,var x:Number = 1)和原始对象(例如,var x:Number = new Number(1))这两种情况下,equality 运算符在 ActionScript 3.0 中生成的结果与在 ActionScript 2.0 中生成的结果不同。这是由于 ActionScript 3.0 不再区分原始值和原始包装对象。

首先,在 ActionScript 3.0 中,在对包含相同值的原始值和原始对象进行比较时将返回 true,但在早期版本中则返回 false。在早期版本中,原始值的数据类型是 Boolean、Number 或 String,而原始对象的数据类型总是 Object,而不是 Boolean、Number 或 String。这种区别的实际效果是,在早期版本的 ActionScript 中,以下代码生成 false(因为操作数的数据类型不相匹配),但在 ActionScript 3.0 中,结果为 true(因为原始值的类型为 Boolean、Number、int、uint 或 String,而与它们是否包装在对象中无关)。

var num1:Number = 1;
var num2:Number = new Number(1);
trace(num1 === num2); // true in ActionScript 3.0, false in ActionScript 2.0
			
第二,在对两个包含相同值的原始对象进行比较时,在 ActionScript 3.0 中将生成 true,但在早期版本中则生成 false
var num1:Number = new Number(1);
var num2:Number = new Number(1);
trace(num1 == num2);  // true in ActionScript 3.0, false in ActionScript 2.0
trace(num1 === num2); // true in ActionScript 3.0, false in ActionScript 2.0
原因在于,在早期版本的 ActionScript 中,这两个变量的数据类型均为 Object,因此将对它们按引用进行比较,而且等于运算和全等运算的结果均为 false。但是,在 ActionScript 3.0 中,这两个变量的数据类型均为 Number,因此将按值对它们进行比较,等于运算和全等运算的结果均为 true

操作数
expression1:Object — 数字、字符串、布尔值、变量、对象、数组或函数。
expression2:Object — 数字、字符串、布尔值、变量、对象、数组或函数。

结果
Boolean — 比较的布尔结果。

示例
如何使用本示例
下例说明当值和数据类型都匹配时,strict equality (===) 运算符与 equality (==) 运算符相同:
var string1:String = "5"; 
var string2:String = "5"; 
trace(string1 == string2);  // true 
trace(string1 === string2); // true
下例说明 strict equality 运算符不将 String 类型的数据转换为 Number 类型的数据,但是 equality (==) 运算符却进行这样的转换:
// The equality (==) operator converts 5 to "5", but the strict equality operator does not
var string1:String = "5"; 
var num:Number = 5; 
trace(string1 == num);  // true 
trace(string1 === num); // false 
下例说明 strict equality 运算符不将布尔值转换为数字,但是 equality 运算符却进行这样的转换:
var num:Number = 1;
var bool:Boolean = true;
trace(num == bool);  // true 
trace(num === bool); // false
下例说明 strict equality 运算符确实转换 int 和 uint 数据类型:
var num1:Number = 1;
var num2:int = 1;
var num3:uint = 1;
trace(num1 === num2); // true
trace(num1 === num3); // true
下例说明 strict equality 运算符将 nullundefined 视为不相等,但是 equality 运算符却将它们视为相等:
trace(null == undefined);  // true 
trace(null === undefined); // false 

相关 API 元素

!== strict inequality 运算符  
用法

expression1 !== expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

测试结果与 strict equality (===) 运算符正好相反。除了仅转换 int 和 uint 数据类型外,strict equality 运算符执行的运算与 inequality 运算符相同。

如果 expression1 等于 expression2,并且它们的数据类型相同,则结果为 false

strict inequality (!==) 运算符与 inequality (!=) 运算符在以下三个方面相同:

  • 数字和布尔值按值进行比较,如果它们具有相同的值,则视为相等。
  • 如果字符串表达式具有相同的字符数,而且这些字符都相同,则这些字符串表达式相等。
  • 表示对象、数组和函数的变量按引用进行比较。如果两个这样的变量引用同一个对象、数组或函数,则它们相等。而两个单独的数组即使具有相同数量的元素,也永远不会被视为相等。
strict inequality 运算符与 inequality (!=) 运算符仅在以下两个方面不同:
  • strict inequality (!==) 运算符仅针对数字类型(Number、int 和 uint)执行自动数据转换,而 inequality != 运算符则针对所有的原始数据类型执行自动数据转换。
  • 当比较 nullundefined 时,strict inequality (!==) 运算符返回 true

操作数
expression1:Object — 数字、字符串、布尔值、变量、对象、数组或函数。
expression2:Object — 数字、字符串、布尔值、变量、对象、数组或函数。

结果
Boolean — 比较的布尔结果。

示例
如何使用本示例
下面代码中的注释说明使用 equality (==)、strict equality (===) 和 strict inequality (!==) 的运算的返回值:
var s1:String = "5"; 
var s2:String = "5"; 
var s3:String = "Hello"; 
var n:Number = 5; 
var b:Boolean = true; 
trace(s1 == s2);  // true 
trace(s1 == s3);  // false 
trace(s1 == n);   // true 
trace(s1 == b);   // false 
trace(s1 === s2); // true 
trace(s1 === s3); // false 
trace(s1 === n);  // false 
trace(s1 === b);  // false 
trace(s1 !== s2); // false 
trace(s1 !== s3); // true 
trace(s1 !== n);  // true 
trace(s1 !== b);  // true 

相关 API 元素

" string delimiter 运算符  
用法

 "text" 

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

如果用在字符之前和之后,则表示字符具有字面值,并被视作一个字符串,而不是一个变量、数值或其他 ActionScript 元素。

操作数
text:String — 零个或一系列字符。

示例
如何使用本示例
以下示例使用引号 (") 指示变量 yourGuess 的值是文本字符串 "Prince Edward Island",而不是变量名称。
var yourGuess:String = "Prince Edward Island"; 
submit_btn.onRelease = function() { trace(yourGuess); }; 
// Prince Edward Island

相关 API 元素

- subtraction 运算符  
用法

-expression
 expression1 - expression2

运行时版本: Flash Player 9

用于取反或减法。

用法 1:用于求反时,该运算符将数值表达式的符号取反。

用法 2:用于减法时,该运算符对两个数值表达式执行算术减法运算,从 expression1 中减去 expression2。两个表达式都为整数时,差为整数。其中任何一个或两个表达式为浮点数时,差为浮点数。

操作数
expression1:Number — 一个数字或计算结果为数字的表达式。
expression2:Number — 一个数字或计算结果为数字的表达式。

结果
Number — 一个整数或浮点数。

示例
如何使用本示例
用法 1:以下语句将表达式 2 + 3 的符号取反:
trace(-(2 + 3)); // -5 
用法 2:以下语句从整数 5 中减去整数 2:
trace(5 - 2); // 3 
结果为整数 3。

下面的语句从浮点数 3.25 中减去浮点数 1.5:

trace(3.25 - 1.5); // 1.75 
结果为浮点数 1.75。

-= subtraction assignment 运算符  
用法

expression1 -= expression2

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

expression1 赋予 expression1 - expression2 的值。例如,下面两个语句是等效的:

x -= y ;
x = x - y;

必须将字符串表达式转换为数字;否则,结果为 NaN(非数字)。

操作数
expression1:Number — 一个数字或计算结果为数字的表达式。
expression2:Number — 一个数字或计算结果为数字的表达式。

结果
Number — 算术运算的结果。

示例
如何使用本示例
下例使用 subtraction assignment (-=) 运算符从 5 中减去 10,然后将结果赋予变量 x
var x:Number = 5; 
var y:Number = 10; 
x -= y; 
trace(x); // -5 
以下示例显示如何将字符串转换为数字:
var x:String = "5"; 
var y:String = "10"; 
x -= y; 
trace(x); // -5 

相关 API 元素

: type 运算符  
用法

[modifiers] var variableName:type
function functionName():type { ... }
function functionName(parameter1:type, ..., parameterN:type) [:type]{ ... } 

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

用于指定数据类型;此运算符可指定变量类型、函数返回类型或函数参数类型。在变量声明或赋值中使用时,此运算符指定变量的类型;在函数声明或定义中使用时,此运算符指定函数的返回类型;在函数定义中与函数参数一起使用时,此运算符指定该参数预期的变量类型。

类型检查总是发生在运行时。但是,当编译器设置为严格模式时,所有类型都在编译时检查,并在出现不匹配的情况时生成错误。在使用 dot (.) 运算符进行赋值运算、函数调用和类成员解除引用的过程中,可能出现不匹配情况。

您可以使用的类型包括所有本机对象类型,您定义的类和接口以及 void。可识别的本机类型有 Boolean、Number、int、uint 和 String。所有内置类都被视为本机类型,因此也受支持。

如果未指定数据类型,则变量、函数返回值或函数参数将被视为无类型,这意味着值可以属于任何数据类型。如果要明确说明您打算使用无类型值,可以将星号 (*) 用作类型注释。当用作类型注释时,星号字符等同于将变量、函数返回类型或函数参数保留为无类型。

操作数
variableName:* — 变量的标识符。
type:* — 本机数据类型、您已定义的类名称或者接口名称。
functionName:Function — 函数的标识符。
parameter:* — 函数参数的标识符。

示例
如何使用本示例
用法 1:以下示例声明了一个类型为 String 且名为 userName 的公共变量,并为其分配了一个空字符串:
var userName:String = ""; 
用法 2:以下示例说明如何通过指定名为 randomInt() 的函数指定某函数的返回类型(将该函数的返回类型指定为 int):
function randomInt(integer:int):int { 
	return Math.round(Math.random()*integer); 
} 
trace(randomInt(8)); 
用法 3:以下示例定义了一个名为 squareRoot() 的函数,该函数采用名为 val 且类型为 Number 的参数,返回 val 的平方根(也是 Number 类型):
function squareRoot(val:Number):Number { 
	return Math.sqrt(val); 
} 
trace(squareRoot(121)); 

相关 API 元素

 typeof 运算符  
用法

typeof expression

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

计算 expression 并返回一个指定表达式的数据类型的字符串。该结果只可能是下列六个字符串值:booleanfunctionnumberobjectstringxml。如果向用户定义的类应用此运算符,则结果为字符串 object。之所以包括 typeof 运算符是为了向后兼容。使用 is 运算符可以检查类型是否兼容。

操作数
expression:Object — 一个要计算的对象。

结果
String — 类型为 expression 的字符串表示形式。下表说明对各个类型的表达式使用 typeof 运算符的结果。

表达式类型

结果

Array

object

Boolean

boolean

Function

function

int

number

Number

number

object

object

字符串

string

uint

number

XML

xml

XMLList

xml

*

undefined


示例
如何使用本示例
下例说明针对各个对象和值使用 typeof 时的结果。
trace(typeof Array); // object
trace(typeof Date);  // object
trace(typeof 3);     // number
下例说明在 ActionScript 3.0 中,无论您赋予字面值还是使用 new 运算符来创建对象,原始对象的数据类型都相同。这与 ActionScript 的早期版本不同,在早期版本中,typeof 运算符对于变量 b 返回 object
var a:String = "sample";
var b:String = new String("sample");
trace(typeof a); // string
trace(typeof b); // string 

相关 API 元素

 void 运算符  
用法

void expression

运行时版本: Flash Player 9

计算表达式,然后放弃其值,返回 undefinedvoid 运算符通常用在一些比较中,这些比较使用 == 运算符来测试未定义的值。

操作数
expression:Object — 要计算的表达式。

结果
* — 值 undefined
< > XML literal tag delimiter 运算符  
用法

 myXML= <{tagName} {attributeName} = {attributeValue}>{content}

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

在 XML 文本中定义 XML 标签。使用正斜杠 / 可以定义结束标签。

操作数
myXML:* — 一个 XML 或 XMLList 对象。
tagName:* — 计算结果为 XML 标签名称的表达式。
attributeName:* — 计算结果为 XML 属性名称的表达式。
attributeValue:* — 计算结果为 XML 属性值的表达式。
content:* — 计算结果为 XML 标签内容的表达式。

示例
如何使用本示例
以下示例显示如何使用 <> 运算符定义 XML 文本:
var x:XML = <item id= "324">cola</item>; 

相关 API 元素

[ X ]为什么显示为英语?
《ActionScript 3.0 参考》中的内容以英语显示

《ActionScript 3.0 参考》中的部分内容未翻译成所有语言。当某个语言元素未翻译时,将显示为英语。例如,ga.controls.HelpBox 类未翻译成任何语言。因此在简体中文版的参考中,ga.controls.HelpBox 类显示为英语。