当前位置: 代码迷 >> vbScript >> 新手请问,dim变量和const常数的应用上的区别
  详细解决方案

新手请问,dim变量和const常数的应用上的区别

热度:5742   发布时间:2013-02-26 00:00:00.0
新手请教,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定义的是变量,在编译的时候会替换为内存地址,值可更改就行了。
  相关解决方案