一、= 赋值运算符
expression1 = expression2
将 expression2(位于右侧的参数)的值赋给 expression1 中的变量、数组元素或属性。可以按值也可以按引用进行赋值。按值进行赋值将复制 expression1 的实际值并将其存储在 expression2 中。在将数字或文本字符串赋予变量时,使用按值进行赋值。按引用进行赋值将把对 expression2 的引用存储在 expression1 中。按引用进行赋值通常与 new 运算符一起使用。使用 new 运算符将在内存中创建一个对象,并将对内存中该位置的引用分配给一个变量。
操作数
expression1 : Object - 一个变量、数组元素或对象的属性。
expression2 : Object - 一个任何类型的值。
返回 Object - 赋予的值,expression2。
示例
下面的示例使用按值进行赋值,将值 5 赋予变量 x。
var x:Number = 5;
下面的示例使用按值进行赋值,将值"hello"赋予变量 x:
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); // output: 3030
二、= 赋值运算符
expression1 = expression2
将 expression2(位于右侧的参数)的值赋给 expression1 中的变量、数组元素或属性。可以按值也可以按引用进行赋值。按值进行赋值将复制 expression1 的实际值并将其存储在 expression2 中。在将数字或文本字符串赋予变量时,使用按值进行赋值。按引用进行赋值将把对 expression2 的引用存储在 expression1 中。按引用进行赋值通常与 new 运算符一起使用。使用 new 运算符将在内存中创建一个对象,并将对内存中该位置的引用分配给一个变量。
操作数
expression1 : Object - 一个变量、数组元素或对象的属性。
expression2 : Object - 一个任何类型的值。
返回 Object - 赋予的值,expression2。
示例
下面的示例使用按值进行赋值,将值 5 赋予变量 x。
var x:Number = 5;
下面的示例使用按值进行赋值,将值"hello"赋予变量 x:
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); // output: 3030
三、== 等于运算符
测试两个表达式是否相等。如果表达式相等,则结果为 true。
确定是否相等取决于参数的数据类型:
数字和布尔值按值进行比较,如果它们具有相同的值,则视为相等。
如果字符串表达式具有相同的字符数,而且这些字符都相同,则这些字符串表达式相等。
表示对象、数组和函数的变量按引用进行比较。如果两个变量引用同一个对象、数组或函数,则它们相等。而两个单独的数组即使具有相同数量的元素,也永远不会被视为相等。
当按值进行比较时,如果 expression1 和 expression2 为不同的数据类型,ActionScript 会尝试将 expression2 的数据类型转换为与 expression1 匹配的数据类型。
操作数
expression1 : Object - 数字、字符串、布尔值、变量、对象、数组或函数。
expression2 : Object - 数字、字符串、布尔值、变量、对象、数组或函数。
返回 Boolean - 比较的布尔结果。
示例 下面的示例将等于运算符 (==) 与 if 语句结合使用:
var a:String = "David", b:String = "David";
if (a == b) {
trace("David is David");
}
下面的示例说明比较混合类型的运算的结果:
var x:Number = 5;
var y:String = "5";
trace(x == y); // output: true
var x:String = "5";
var y:String = "66";
trace(x == y); // output: false
var x:String = "chris";
var y:String = "steve";
trace(x == y); // output: false
四、=== 全等运算符
测试两个表达式是否相等;除了不转换数据类型外,全等运算符 (===) 与等于运算符 (==) 执行运算的方式相同。如果两个表达式(包括它们的数据类型)相等,则结果为 true。
确定是否相等取决于参数的数据类型:
数字和布尔值按值进行比较,如果它们具有相同的值,则视为相等。
如果字符串表达式具有相同的字符数,而且这些字符都相同,则这些字符串表达式相等。
表示对象、数组和函数的变量按引用进行比较。如果两个变量引用同一个对象、数组或函数,则它们相等。而两个单独的数组即使具有相同数量的元素,也永远不会被视为相等。
操作数
expression1 : Object - 数字、字符串、布尔值、变量、对象、数组或函数。
expression2 : Object - 数字、字符串、布尔值、变量、对象、数组或函数。
返回 Boolean - 比较的布尔结果。
示例
下面代码中的注释说明使用等于运算符和精确相等运算符的运算所返回的值:
// Both return true because no conversion is done
var string1:String = "5";
var string2:String = "5";
trace(string1 == string2); // true
trace(string1 === string2); // true
// Automatic data typing in this example converts 5 to "5"
var string1:String = "5";
var num:Number = 5;
trace(string1 == num); // true
trace(string1 === num); // false
// Automatic data typing in this example converts true to "1"
var string1:String = "1";
var bool1:Boolean = true;
trace(string1 == bool1); // true
trace(string1 === bool1); // false
// Automatic data typing in this example converts false to "0"
var string1:String = "0";
var bool2:Boolean = false;
trace(string1 == bool2); // true
trace(string1 === bool2); // false