Vbscript脚本是介于html与Visua Basic之间的一种语言,它更接近于高级语言Visua Basic,但比它简单易学,Vbscript脚本可以在客户端执行,也可以在服务器端执行,asp程序是放在服务器端运行的,将Vbscript代码放在服务器端有两种方法。
方法1
<% Vbscript代码 %> |
方法2
<Script Language="Vbscript" Runat="Server"> Vbscript代码 </Script> |
在没有asp之前Vbscript代码都是在客户端执行的,使用方法如下所示,但这种使用方法和asp一点关系也没有。
<Script Language="Vbscript" Vbscript代码 </Script> |
虽然VBScript是asp的默认语言,但在服务器上,通过asp运行VBScript时,VBScript的InputBox,MsgBox,CreateObject,GetObject 等将不被支持。
第一节 数据类型
数据类型描述变量可以包含的信息的种类。在VBScript中将各种各样的信息统统归纳在一起叫做Variant类型,然后在Variant的子类型中再进行详细分类,Variant类型的特点是根据变量的值自动判断子类型,并根据情况自动进行转换,不必事先对变量进行数据类型声明。我们可以将Variant简单分成如下几种子类型:
1 数值类型
为各种各样的数值,在Variant中分得很详细,有:
(1)Byte
包含 0 到 255 之间的整数。
(2)Integer
包含 -32,768 到 32,767 之间的整数。
(3)Currency
包含-922,337,203,685,477.5808 到 922,337,203,685,477.5807。
(4)Long
包含 -2,147,483,648 到 2,147,483,647 之间的整数。
(5)Single
包含单精度浮点数,负数范围从 -3.402823E38 到 -1.401298E-45,正数范围从 1.401298E-45 到 3.402823E38。
(6)Double
包含双精度浮点数,负数范围从 -1.79769313486232E308 到 -4.94065645841247E-324,正数范围从 4.94065645841247E-324 到 1.79769313486232E308。
在选取数据的类型时,要根据实际需要进行,如果能够使用小的就尽力选用小的,这样占用内存较少,运行速度比较快。
2 字符串类型
字符串类型的数据用string表示,要放在双引号之间。
3 日期类型
日期类型的数据用Date表示,要放在双#号之间,如:#2005-1-26#
4 布尔类型
布尔类型的数据用boolean表示,有两个值true,false,布尔值和数字有如下关系数字false相当于0,true相当于-1。
5 对象类型
对象类型的数据用Object表示
6 空值
空值Null表示不含任何数据。
7 未定义
未定义Empty表示数据未被初始化,也就是变量没有被赋值。
8 错误数据
错误数据Error包含错误号。
第二节 常量与变量
常量指的是在程序运行过程中其值保持不变的量,它用来保存固定不变的数值,字符串等常数,和其它编程语言一样,常量已经声明,其值就不能被更改了,这和变量不同,其后如果你写了pi=8将是无效的,在vbscript中使用指令const定义常量,例如:
const const_a = "学习" const PI = 3.14159 |
变量是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储脚本运行时可更改的程序信息。使用变量并不需要了解变量在计算机内存中的地址,只要通过变量名引用变量就可以查看或更改变量的值。
1 变量声明
在VBScript中可以在未经声明的情况下就使用变量,但这不是一个好习惯,使用变量之前应该首先声明变量,在asp文件中声明变量的方法是使用dim语句,如下所示:
声明一个变量a
<% dim a %> |
声明两个变量a和b
<% dim a,b %> |
2 为变量赋值
声明了变量就可以使用变量保存数据了,将一个数据保存到变量中去,使用赋值运算符"="。如下所示:
示例 sl2-1.asp
<html> <head><title>asp简单程序</title></head> <body> <% dim a a="我们开始学习asp了" response.write(a) %> </body> </html> |
示例解读:
程序首先使用dim语句声明了一个变量a,然后使用赋值运算符"=",将文本数据"我们开始学习asp了",保存到变量a中,文本数据是字符串类型的,所以要放在双引号中。最后使用asp输出指令显示变量a中的内容。
将数据保存到变量中,然后使用变量来引用该数据,叫变量引用,为什么在编程中常常使用引用而不是直接使用结果呢,这是因为当一个很大的数字或者一个表达式很长时,书写起来是很麻烦的,而使用一个变量表示它就方便的多,更容易阅读。
2 变量的命名规则
变量或常量在命名时要注意的是:第一个字符要用英文字母,不能使用数字,中间也不能使用标点符号和运算符,还要注意避开关键字,如:dim,sub,end,等
下面的变量名是错误的
(1) 5am (不能用数字开头) (2) a.cb (不能包含标点符号) (3) if (不能使用关键字) |
3 变量的作用域
变量的作用域也叫生命期,可见性,定义域等,他决定了变量可被访问的范围,在asp中根据变量的作用域可以划分出局部变量,全局变量,会话变量,应用程序变量;
(1)局部变量 指的是在过程内部定义的变量,在过程外部不能访问
(2)全局变量指的是在过程外部声明的变量,也叫页面变量,能够被asp同一页面上的所有脚本访问和修改
(3)会话变量和应用程序变量,这两种变量的对于所有页面都是可见的,会话变量是单个用户存储信息的最佳选择,例如存储用户名,用户标识,首选项等,应用程序变量是针对所有用户的,是一种大家都能操作的变量,在asp中这两种变量分别存贮在Session对象和Application对象中。
第三节 数组
1 一维数组
数组指的是:具有相同数据类型的一组数据按照一定的顺序构成的数据集合, 实际上就是一组内存地址的标记符号, 声明数组也使用关键字dim,只不过数组名后面要带一个圆括号,括号中填写数组长度;
示例 sl2-2.asp
<html> <head><title>asp简单程序</title></head> <body> <% dim sum '声明一个变量sum Dim myarray(3) '声明长度为3的数组 myarray(0)=1 '为第0位数组元素赋值 myarray(1)=2 '为第1位的数组元素赋值 myarray(2)=3 myarray(3)=4 '对所有数组元素的值求和 sum=myarray(0)+myarray(1)+myarray(2)+myarray(3) response.write(sum) %> </body> </html> |
程序解读
一维数组类似于标了号码的一排装货箱子,对于这一排箱子,我们可以给它起一个名字,比如叫做myarray,不过对他们进行标号时,是从0开始的,例如现在有5个箱子,其标号为0,1,2,3,4;每个箱子里都放着一些物品,这些物品叫数组的元素,现在我们要把1个鸡蛋放到第一个箱子中,把5个鸡蛋放到第二个箱子中我们就写
myarray(0)=1个鸡蛋 myarray(1)=5个鸡蛋 |
2 二维数组
二维数组类似于棋盘的格子,每个格子的交叉点就是数组的一个元素。二维数组的元素需要两个下标,第一个下标表示行号,第二个下标表示列号。
示例 sl2-3.asp
<html> <head><title>asp简单程序</title></head> <body> <% Dim sum Dim ar(4,5) '声明一个5行6列的二维数组 ar(1,2)=1 ar(2,3)=2 ar(4,1)=3 sum=ar(1,2)+ar(2,3)+ar(4,1) response.write(sum) %> </body> </html> |
示例解读:
示例声明了一个5行6列的二维数组,这个数组可以有很多元素,但我们只给其中的三个元素进行了赋值,其它元素没有值都是空元素,对二维数组的元素进行定位时,使用行索引和列索引,要定位第三行第四列的元素,我们就写ar(2,3),注意索引号从零开始。
3 动态数组
动态数组指的是空数组,就是声明一个没有元素的数组,在需要的时候用redim添加元素;当用redim多次添加元素时,只保留最后添加的redim数组元素,前面的会被清空;如果要使前面的不被清空,可以使用redim preserve来为数组添加元素;
示例 sl2-4.asp
<html> <head><title>asp简单程序</title></head> <body> <% Dim myarray() '定义一个动态数组 redim myarray(2) '重定义数组含有3个元素 myarray(2)="asp" '为新定义的数组的最后一个元素赋值 redim myarray(5) '再次定义数组 myarray(5)="flash" '为数组第六个元素赋值 response.write(myarray(2)) '输出myarray(2)的值 response.write(myarray(5)) '输出myarray(5)的值 '结果只显示myarray(5)的值而myarray(2)被清空了 %> </body> </html> |
示例 sl2-5.asp
<html> <head><title>asp简单程序</title></head> <body> <% Dim myarray() '定义一个动态数组 redim myarray(2) '重定义数组含有3个元素 myarray(2)="asp" '为新定义的数组的一个元素赋值 redim preserve myarray(5)'再次定义数组,使用了preserve myarray(5)="flash" '为新定义的数组的一个元素赋值 response.write(myarray(5)) response.write( myarray(2)) '结果保留了myarray(2)的值,显示flashasp %> </body> </html> |
第四节 运算符
运算符优先级,当表达式包含多种运算符时,首先计算算术运算符,然后计算比较运算符,最后计算逻辑运算符。使用括号可以更改这种顺序,程序总是先执行括号中的运算符,然后再执行括号外的运算符。
1 算术运算符
+ 加 - 减 * 乘 / 除 \ 取整除法 mod 取模 ^ 幂 |
2 连接运算符
+ 连接字符串 & 连接字符串 |
示例 sl2-6.asp
<html> <head><title>asp简单程序</title></head> <body> <% dim a1,b1,c1 a1=2 b1=3 c1=a1+b1 response.write(c1) '程序执行求和运算显示:5 response.write("<br>") dim a2,b2,c2,c3 a2="认真学习" b2="asp" c2=a2+b2 c3=a2&b2 response.write(c2) '程序执行连接运算显示:认真学习asp response.write("<br>") response.write(c3) '程序执行连接运算显示:认真学习asp dim a3,b3,sum a3=5 b3="25" sum=a3+b3 response.write("<br>") response.write(sum) '字符串b3被转换成了数字显示:30 %> </body> </html> |
示例解读:
"+"号连接两个数字程序执行求和运算,连接两个字符串程序执行连接运算,要执行连接运算时最好使用 & ,本例还说明了Vbscript具有数据类型自动转换功能(Variant类型的特点)。
示例 sl2-7.asp
<html> <head><title>asp简单程序</title></head> <body> <% dim a,b a=5 mod 2 response.write(a) '显示1 response.write("<br>") b=7 mod 4 response.write(b) '显示3 %> </body> </html> |
示例解读:
mod音译为“模”,故叫取模运算,通常也叫取余运算,运算时首先进行除法运算然后取余数,取余运算并不在乎其商是多少,目的只是获取余数,例如5/2余1,我们使用余数1去参加运算,称为数字5对数字2的余,取余运算常常用于奇偶判断,范围控制等,如c=x mod 4,x无论是多少c的值永远不会大于4。
3 比较运算符
比较运算符用于对两个数据进行比较,两个数据必须是相同类型的数据,返回的结果一般是一个布尔值,比较运算符或由其构成的表达式,常常应用于条件语句中;
= 等 > 大于 < 小于 >= 大于等于 <= 小于等于 <> 不等于 Is 比较两个对象是否相等 |
示例 sl2-8.asp
<html> <head><title>asp简单程序</title></head> <body> <% dim a,b,c a=5 '为变量a赋值 response.write(a) '返回5 response.write("<br>") response.write(a=5) '返回True response.write("<br>") b=a=5 '为变量b赋值 response.write(b) '返回True response.write("<br>") response.write(b=a=5) '返回False response.write("<br>") response.write(b=a=0) '返回True %> </body> </html> |
示例解读:
在等号"="运算符组成的表达式中,要返回等号左边的变量时,等号"="会做为赋值运算符参与运算,要返回表达式的值时,等号会做为比较运算符参与运算。
4 逻辑运算符
逻辑运算符一般总是用在条件语句中进行逻辑判断,下面是三个比较重要的逻辑运算符。
(1)And 逻辑与
格式: a And b
说明:当a和b都为true时返回true,否则返回false
示例 sl2-9.asp
<% dim a,b,c a=true b=true c=false response.write a '返回true response.write "<br>" response.write b '返回true response.write "<br>" response.write a And b '两者为true返回true response.write "<br>" response.write a And c '两者任一个为false则返回false %> |
(2)Or 逻辑或
格式: a Or b
说明:如果a与b有一个为true则返回true
示例 sl2-10.asp
<% dim a,b,c a=true b=true c=false response.write a Or b '两者为true返回true response.write "<br>" response.write a Or c '两者任一个为true则返回true %> |
(3)Not 逻辑非
格式: Not a
说明:说明:如果a为true则返回false,如果a为false则返回true
示例 sl2-11.asp
<% dim a,b a=true b=false response.write Not a 'a为true返回false response.write "<br>" response.write Not b 'b为false返回true %> |