学习 Adobe Flash 中的 ActionScript 2.0 |
|
|
|
| 数据和数据类型 > 关于变量 > 在应用程序中使用变量 | |||
在本节中,您将在 ActionScript 的简短代码片断中使用变量。您需要在脚本中声明和初始化变量,然后才能在表达式中使用它。表达式是操作数和运算符的组合,表示一个值。例如,在表达式 i+2 中,i 和 2 是操作数,而 + 是运算符。
如果在表达式中使用变量之前没有对它进行初始化,则变量就处于未定义状态,因而会导致意外结果。有关编写表达式的详细信息,请参阅"语法和语言基础知识"。
如果使用未定义的变量(如下例所示),在 Flash Player 7 和更高的版本中,该变量的值将为 NaN,并且您的脚本可能产生意外的结果:
var squared:Number = myNum * myNum; trace(squared); // NaN var myNum:Number = 6;
在下例中,声明和初始化变量 myNum 的语句放在前面,因此 squared 就可以替换为一个值:
var myNum:Number = 6; var squared:Number = myNum * myNum; trace(squared); // 36
当您将未定义的变量传递给方法或函数时,将出现类似的行为,如下所示。
比较向函数传递未定义变量和已定义变量的情形:
// 无法正常工作
function badClickListener(evt:Object):Void {
getURL(targetUrl);
var targetUrl:String = "http://www.adobe.com";
}
bad_button.addEventListener("click", badClickListener);
// 有效
function goodClickListener(evt:Object):Void {
var targetUrl:String = "http://www.adobe.com";
getURL(targetUrl);
}
good_button.addEventListener("click", goodClickListener);
该按钮正常打开该 Web 页。
变量包含的数据类型会影响如何以及何时更改变量的值。原始数据类型(例如字符串和数字)是按值进行传递 的,这意味着使用的是变量的当前值,而非对该值的引用。复杂数据类型的例子包括 Array 和 Object 数据类型。
在下例中,将 myNum 设置为 15 并将该值复制到 otherNum 中。当您将 myNum 更改为 30(在代码的第 3 行)时,otherNum 的值仍然是 15,因为 otherNum 不会到 myNum 中查找它的值。otherNum 变量包含它接收到的 myNum 的值(在代码的第 2 行)。
在 ActionScript 中使用变量:var myNum:Number = 15; var otherNum:Number = myNum; myNum = 30; trace(myNum); // 30 trace(otherNum); // 15
当您将 myNum 更改为 30(在代码的第 3 行)时,otherNum 的值仍然是 15,因为 otherNum 不会到 myNum 中查找它的值。otherNum 变量包含它接收到的 myNum 的值(在代码的第 2 行)。
function sqr(myNum:Number):Number {
myNum *= myNum;
return myNum;
}
var inValue:Number = 3;
var outValue:Number = sqr(inValue);
trace(inValue); // 3
trace(outValue); // 9
在此代码中,变量 inValue 包含一个原始值 3,因此该值会传递给 sqr() 函数,而返回值为 9。变量 inValue 的值不会更改,尽管函数中的 myNum 值会发生更改。
Object 数据类型可以包含大量复杂的信息,所以属于此类型的变量并不包含实际的值;它包含的是对值的引用。这种引用类似于指向变量内容的别名。当变量需要知道它的值时,该引用会查询内容,然后返回答案,而无需将该值传递给变量。
有关按引用传递变量的信息,请参阅按引用传递变量。
|
|
|
|