去掉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声明的变量是在实例间共用的。
![[Google]](http://www.google.com/logos/Logo_25wht.gif)
![[Synchronous Space]](http://weihe924stephen.googlepages.com/syncspace-banner.jpg)
![[Creative Commons License]](http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png)
![[Add to Google]](http://buttons.googlesyndication.com/fusion/add.gif)
![[Aggregated by MXNA]](http://weblogs.macromedia.com/mxna/images/mxna88x31.gif)
![[Flex.org]](http://www.flex.org/images/flexorg.gif)
![Validate my Atom 1.0 feed [Valid Atom 1.0]](http://validator.w3.org/feed/images/valid-atom.png)
![Validate my RSS feed [Valid RSS]](http://resource.googlecode.com/files/valid-rss.png)
![[I heart FeedBurner]](http://www.feedburner.com/fb/images/pub/i_heart_fb.gif)
没有评论:
发表评论