在程序中使用变量

您必须在脚本中声明变量,然后才能在表达式中使用它。如果使用未声明的变量(如以下示例所示),该变量的值将是 NaNundefined,并且您的脚本可能产生意外的结果:

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。因为该数组是按引用进行传递的,所以该函数可以修改它。