1. 基元数据类型
1.1 处理数字
1.1.1 int:默认0;4字节,有符号的32位整数,范围从-2 147 483 648~2 147 483 648;
1.1.2 uint:默认0;4字节,无符号32位整数,范围从0~4 294 967 295;
1.1.3 Number:默认NaN;8字节,64位浮点值;
1.2 String:默认null;有由一串字符组成,这里的字符是unicode字符;
1.3 Boolean:默认false;可使用非Boolean值的表达式作为判断条件,会自动使用默认值或者进行类型转换;
2. 复杂数据类型
2.1 Array:
2.2 Date:
2.3 Error:
2.4 Function:
2.5 RegExp:
2.6 XML:
2.7 XMLList:
3. 变量声明
3.1 必须使用var关键字,并且指定类型,若未指定,默认是untyped,形如:var i; 或者 var i:*;
3.2 正确声明:var i:int; 设置默认值:var i:int=1;
3.3 未声明类型的变量,默认值都是undefine
3.4 若Number类型变量a没有初始化,那么这个变量a参加数学运算返回的结果也是NaN,但是如果将运算结果返回给int或unit类型变量b,那么这是输出b,b的值是0,即是输出的是b的默认值0.
3.5 Number将给定值转换成数字值。下表显示各种输入类型的结果:
输入类型/值 | 示例 | 返回值 |
---|---|---|
undefined | Number(undefined) | NaN |
null | Number(null) | 0 |
true | Number(true) | 1 |
false | Number(false) | 0 |
NaN | Number(NaN) | NaN |
空字符串 | Number("") | 0 |
转换为数字的字符串 | Number("5") | 数字(例如 5 ) |
没有转换为数字的字符串 | Number("5a") | NaN |
所以可以使用Number判断String类型数据能否转化为数值:if(!Number("str")){...}
4. 值类型和引用类型变量的区别
4.1 值类型
4.1.1 AS3中值类型的有int、uint、Number、String、Boolean.
4.1.2 值类型变量不用new来创建,必须用new创建的不是值类型变量
4.1.3 值类型变量直接存值,每个变量的值不会随其他变量的值改变而改变。
4.2 引用类型
4.2.1 变量持有引用,引用指向要操作的对象(引用也是一种数据类型,类似于C语言的指针,指示对象在内存中的地址)
4.2.2 两个引用指向同一个对象,改变任何一个引用所指向对象的值,另一个引用的值也会随之改变
5. 基元数据类型的深入探讨
5.1 与Java不同,AS3的值类型本质上仍是对象,是一种不变对象,即是一旦建立就不会改变,每次操作返回新的对象。
5.2 不变对象机制,使得基本数据类型的执行效率较高
5.3 在ActionScript 3.0 中,所有的参数均按引用传递,因为所有的值都存储为对象。基元型数据是不变的对象,按按值还是按引用的效果一样,通常可以看作是按值传递。按值传递,就是指参数被传递给函数后,被传递的变量就独立了。若在函数中改变这个变量,原变量不会发生任何的变化。
6. 声明常量
6.1 使用const关键字,一经赋值,不可更改(对于值类型,常量持有的就是值;对于引用类型,常量持有的就是引用,只保证持有的引用不变,不保证引用对象自身状态的不变。)
6.2 var声明变量,const声明常量。二者互斥。
7. 常用数据类型
7.1 所有基本数据类型:Boolean、int、uint、Number、String
7.2 两种复杂类型:Array、Object
8. int/uint/Number数据类型运算问题
8.1 整数有正负之分优先使用int;处理正整数/颜色相关的值优先使用unit;可能会碰到小数点时使用Number;
8.2 使用uint时,不要使运算结果出现负数;
8.3 整型数除以整型数,得到的仍是整型数;浮点数与整型数的除法运算,会得到浮点数;
8.4 不要让数值差距过大的浮点数相加减,结果可能有偏差,可使用Math.round( )来修正。
9.使用通配符*定义无类型变量
*表示该数据类型未知,必须等到运行时才知道,或者可以接受多种类型的数据。要创建根据参数的数据类型而表现出不同行为的函数,通配符是很有用的。但是使用这种类型时需要格外小心,因为这些变量不具备强类型检查,并且运行结果可能是不可预知的。