*技巧5:尽可能的使用本地(局部)变量
(以下的新技巧将取代较早前发布的"在一行内定义变量",其中包含有一些错误观点):
局部变量是在子程序和函数中定义的(也就是常说局部范围的变量),这些变量被编译成数字指向并放入一张表中。这些局部变量的指向可以通过一次编译完成。而全局变量则是在运行时被执行的。这就意味着局部变量的存取要比全局变量快好几倍。而且,多维全局变量是其中最慢的,当第一次使用一个多维全局变量时,在新的对象产生之前,就要在整个对象模型中搜索一遍同名的对象。
以下是一个非常常见的例子:
Foo.bar.blah.baz = Foo.bar.blah.qaz(1)
If Foo.bar.blah.zaq = Foo.bar.blah.abc then
运行时产生如下结果:
1)变量Foo被定义为一个全局变量2)变量bar被定义为Foo的一个成员3)变量blah被定义为Foo.bar的一个成员4)变量qaz被定义为Foo.bar.blah的一个成员5)调用Foo.bar.blah.quaz(1)6)重复1至3。系统并不知道如果调用qaz改变了对象模型1-3步必须重新执行7)定义baz为Foo.bar.blah的成员,输出值8)重复1-3,执行zaq9)重复1-3,执行abc
正如你看到的,效率极其低下,最快的方法就是把这些代码写在vbscript中:
Set myobj = Foo.bar.blah ' do the resolution of blah ONCEMyobj.baz = myobj.qaz(1)If Myobj.zaq = Myobj.abc then