![]() ![]()  | |
您必须在脚本中声明变量,然后才能在表达式中使用它。如果使用未声明的变量(如以下示例所示),该变量的值将是 NaN 或 undefined,并且您的脚本可能产生意外的结果: 
var squared = x*x; trace(squared); // NaN var x = 6;
在下面的示例中,声明变量 x 的语句必须排在第一,这样 squared 就可以替换为一个值:
var x = 6; var squared = x*x; trace(squared); // 36
当您将未定义的变量传递给方法或函数时,将出现类似的行为:
getURL(myWebSite); // 无动作 var myWebSite = "http://www.macromedia.com"; var myWebSite = "http://www.macromedia.com"; getURL(myWebSite); // 浏览器显示 www.macromedia.com
在一个脚本中,可以多次更改变量的值。变量包含的数据类型会影响如何以及何时更改变量。原始数据类型(例如字符串和数字)是按值进行传递的。这意味着变量的实际内容会传递给变量。
在下面的示例中,x 设置为 15,该值会复制到 y 中。在第 3 行中将 x 的值更改为 30 后,y 的值仍然为 15,这是因为 y 并不会参照 x 来改变它的值;它的值为在第 2 行中接收到的 x 的值。
var x = 15; var y = x; var x = 30;
又例如,变量 inValue 包含一个原始值 3,因此实际的值会传递给 sqrt() 函数,而返回值为 9: 
function sqrt(x){return x * x;}var inValue = 3;var out = sqrt(inValue);
变量 inValue 的值不会更改。
对象数据类型可以包含大量和复杂的信息,所以属于此类型的变量并不包含实际的值;它包含的是对值的引用。这种引用类似于指向变量内容的别名。当变量需要知道它的值时,该引用会查询内容,然后返回答案,而无需将该值传递给变量。
下面是按引用进行传递的示例:
var myArray = ["tom", "josie"]; var newArray = myArray; myArray[1] = "jack"; trace(newArray);
上面的代码创建了一个名为 myArray 的数组对象,它包含两个元素。然后创建了变量 newArray,并向它传递了对 myArray 的引用。当 myArray 的第二个元素变化时,它将影响引用它的每个变量。trace() 动作会向“输出”面板发送 tom, jack。
在下面的示例中,myArray 包含一个数组对象,因此它会按引用传递给函数 zeroArray()。zeroArray() 函数会更改 myArray 中的数组的内容。
function zeroArray (theArray){
  var i;
  for (i=0; i < theArray.length; i++) {
    theArray[i] = 0;
  }
} 
var myArray = new Array();
myArray[0] = 1;
myArray[1] = 2;
myArray[2] = 3;
zeroArray(myArray);
函数 zeroArray() 会将数组对象作为参数来接受,并将该数组的所有元素设置为 0。因为该数组是按引用进行传递的,所以该函数可以修改它。
![]() ![]()  | |