关于类型检查

类型检查 是指验证变量和表达式的类型是否兼容。因此,Flash 检查您为变量指定的类型是否与赋给它的值相匹配。有关严格数据类型和指定数据类型的详细信息,请参阅关于指定数据类型和严格数据类型指定指定数据类型

类型检查可以在编译时或运行时执行。如果使用严格数据类型指定,则在编译时进行类型检查。因为 ActionScript 是一种动态指定类型的语言,所以 ActionScript 在运行时也可以进行类型检查。

例如,以下代码没有指定参数 xParam 的数据类型。在运行时,可以使用该参数保存一个 Number 类型的值,然后使用该参数保存 String 类型的值。dynamicTest() 函数然后使用 typeof 运算符测试该参数是 String 类型还是 Number 类型。

function dynamicTest(xParam) {
    if (typeof(xParam) == "string") {
        var myStr:String = xParam;
        trace("String: " + myStr);
    } else if (typeof(xParam) == "number") {
        var myNum:Number = xParam; 
        trace("Number: " + myNum);
    } 
}
dynamicTest(100);
dynamicTest("one hundred");

无需在 ActionScript 中显式添加数据类型信息。ActionScript 编译器允许在编译时使用不存在的属性和调用不存在的方法。这使您可以在运行时动态创建属性和指定方法。

动态类型检查提供的灵活性的一个例子是,可以在编译时使用未知的属性和方法。因为代码的限制性更小,所以,这会给某些编码情形带来好处。例如,下面的代码创建了一个名为 runtimeTest() 的函数,它调用一个方法并返回一个属性,这两个事件对编译器来说都是未知的。代码不会生成编译时错误,但是如果属性或方法在运行时不能访问,就会出现一个运行时错误。

function runtimeTest(myParam) {
    myParam.someMethod();
    return myParam.someProperty; 
}