去掉strict模式,AS3.0的自由度大大提高了。 但 ”With great power comes great responsibility”,选择越大,风险也越大。
不用var来初始化变量
不管是 Flash CS3 还是 Flex2 ,去掉strict模式后就可以不用var来初始化变量。比如以下代码就可以通过编译。
public class Foo {
public function setMyGlobal(val:int):void {
i = val;
}
public function printMyGlobal():void {
trace(i);
}
}
以下代码会正常工作。
var foo:Foo = new Foo(); foo.setMyGlobal(10); foo.printMyGlobal(); // ->10
但不调用setMyGlobal()
,直接调用printMyGlobal()
的话,执行时,会弹出i未定义的错误。
var foo:Foo = new Foo(); foo.printMyGlobal(); // 执行时错误
这是因为没有在setMyGlobal()
里初始化i
。
public function setMyGlobal(val:int):void {
i = val; // 最先执行这一行时初始化i。
}
不用var声明的变量的作用域
var foo1:Foo = new Foo(); var foo2:Foo = new Foo(); foo1.setMyGlobal(10); foo2.printMyGlobal(); // ->10
在foo1
里设定的值,在foo2
里也能参照。也就是说不用var声明的变量是在实例间共用的。
没有评论:
发表评论