1、用var声明变量,用:指定变量类型,若不指定类型,严格模式下会出现编译错误。正确的如如var v:int=1;
2、与java不同的是,在as3中,变量没有块级作用域(即两人大括号中间),如果在一个块内声明了一个变量,比如一个for循环内声明了一个变量,它在该代码所在整个函数内都是可访问的。 如:
function myFunction():void{
for(var i:int=0;i<5:i++){
var last:int = i;
}
trace(last);
}
看上面的代码,变量last虽然是在for代码块内部声明的,但在代码块外部也是可以访问的,只要不超出函数体。
3、 何为“提升”?as3会把所有的声明提到函数体的顶部。也就是说你可以使用一个变量,只要这个变量在函数体内被声明过,但不在乎它声明的位置,哪怕是在函数体的结尾。或者可以说,变量是可以先使用再声明的,这是从代码表面来看的,因为内部机制来说,as3会把所有的声明放到函数体的顶部执行,实际上还是先声明再使用的。 如:
function myFunction():void{
trace(num); // NaN
var num:Number=10;
trace(num); //10
}
上面的代码也是合法的。但是第一个trace(num)会生成NaN,这是因为编译器只会提升声明,而不会提升任何赋值语句。 第二个trace(num)生成10.你也可以先赋值再声明,如:
function myFunction():void{
num=5;
trace(num); //5
var num:Number=10;
}
4、无类型变量。 声明一个变量时如果指写它的类型为*,它就是无类型变量,也是变量的默认类型,即如果声明一个变量,但没指定它的类型,它的类型就是*。下面的两个变量都是无类型变量:
var aa;
var bb:*;
5、当声明一个变量,但没有赋值时,系统会为它分配一个默认值,不同类型的变量默认值是不同的。
数据类型 默认值
Boolean false
int 0
Number NaN
Object null
String null
uint 0
未声明(与类型注释 * 等效) undefined
其它所有类(包括用户定义的类)null
- 无类型变量的默认值是undefined
- Boolean、int、Number、uint之外所有类型变量的默认值都是null。而将undefined赋值给这部分变量时,赋的值就会转换成null.
- null对 Boolean、int、Number、uint这四种类型变量是无效的,当将null赋值给这四种类型变量时,会将null值转换为它们对应的默认值。如:
如i的值还是为0;var i:int; i = null; trace(i); //0