新手请教,dim变量和const常数的应用上的区别
大家好,小弟是新手,刚开始学习vbscript ,以后要常来请教大家了。
我以前经常用
dim a=123 或直接 a=123 来定义 a的值,但刚发现const a=123 似乎也可以。
但一个变量,一个常数,我现在搞不明白,如果直接定义a=123 这个123具体的值的时候,是不是 a 就不算变量,就没必要用变量来表示a了? 那如果是,const还有什么意义,我直接 a=123 就定义了 a的值。
请指教,具体 dim 和const在使用上的区别,主要是const ,既然直接定义了a=123,为什么还要加const ?
[解决办法]
dim a=123
const b=123
a=321'通过
b=321'错误
const还有什么意义?
如果你在程序中有100个地方用到了常量123,现在你要把这个数值修改成321,你岂不要修改100个地方,如果用const只需要修改一个地方,并且不会出错!
[解决办法]
dim定义的是变量,定义后可以随时修改变量的值
const定义的是常量,常量定义后不能再修改它的值。
例如
<%
dim a
a=34
const pi=3.14
...
a=56'正确
...
pi=3.15'错误
%>
[解决办法]
const 定义的常量在编译时会直接替换为立即数,而dim和匿名定义的变量是在内存中。
运行的时候,CONST定义的立即不需要寻址,可以直接用,明显会比内存中的变量少了个寻址取值的过程,所以会快一些。
打个比方:
const A = 200
dim b = 100
WScript.Echo A+b
在编译的时候可能是这样:
dim b = 100
WScript.Echo 200 + Dword ptr [b的内存地址]
可以明显看到,少了给A分配内存,初始化值,寻址,取值的过程,当然,实际的处理中不会是上面描述的这么简单。
只要记得CONST定义的是常量,在编译的时候会自动替换为数值,而且值不看修改;而dim定义的是变量,在编译的时候会替换为内存地址,值可更改就行了。