这是第一部分:ASP基本运算和基本语法
/*-------------------ASP基本运算和基本语法--------------------*/
算术运算符 | 比较运算符 | 逻辑运算符 | |||
描述 | 符号 | 描述 | 符号 | 描述 | 符号 |
求幂 | ^ | 等于 | = | 逻辑非 | Not |
负号 | - | 不等于 | <> | 逻辑与 | And |
乘 | * | 小于 | < | 逻辑或 | Or |
除 | / | 大于 | > | 逻辑异或 | Xor |
整除 | \ | 小于等于 | <= | 逻辑等价 | Eqv |
求余 | Mod | 大于等于 | >= | 逻辑隐含 | Imp |
加 | + | 对象引用比较 | Is | ||
减 | - | ||||
字符串连接 | & |
*-->代码书写:
代码块:<%...%>,ASP语句起始和结束的标志
注释:',一个单引号是asp文件的注释开始
引用外部文件:<!--#include virtual/file="url"-->,virtual是引用虚拟路径下的,
file引用绝对路径或者相对路径的文件,文件不一定是asp
扩展名的,html,inc等等文件都是许可的
当乘号与除号同时出现在一个表达式中时,按从左到右的顺序计算乘、除运算符。同样当加与减同时出现在一个表达式中时,按从左到右的顺序计算加、减运算符。
*-->基本运算:
赋值:=,用于一般变量的赋值
set,用于对象的赋值
算术运算:+,-,*,/,mod,^,这些是常见的加减乘除,取模和指数
\这个是整数除法
关系运算:>,<,>=,<=,=,<>,这些是常见的大于,小于,大于等于,小于等于,等于,不等于
is,比较变量是否属于同一个对象
result=object1 is object2,两个对象变量属于同一个对象,
返回true,否则返回false
逻辑运算:or,and,not,xor,常用的或且非和异或
epv,判断两个表达式逻辑相等,两者相同结果为真,否则为假
imp,判断两个表达式逻辑上是否相关
字符串运算符:&,用于字符串的连接
*-->变量的声明:
dim,声明一个变量
const,定义一个常量
对于变量的命名原则和其他所有编程语言相同,对于个人,用这样的约定:
常量全部大写;
变量必须有意义,并且当他是几个单词构成的时候,采用驼峰式书写规则
*-->数据类型:
只有Variant弱类型数据(VBScript)
Variant 子类型:
Empty,未初始化的Variant,对于数值变量,值为0;对于字符串变量,值为零长度字
符串""
Null,不包含任何有效数据的Variant
Boolean,包含True或False
Byte,包含0到255之间的整数
Integer,包含-32768到32767之间的整数
Currency,-922337203685477.5808到922337203685477.5807
Long,包含-2147483648到2147483647之间的整数
Single,包含单精度浮点数,负数范围从-3.402823E38到-1.401298E-45
正数范围从1.401298E-45到3.402823E38
Double,包含双精度浮点数,负数范围从-1.79769313486232E308到
-4.94065645841247E-324正数范围从4.94065645841247E-324到
1.79769313486232E308
Date(Time),包含表示日期的数字,日期范围从公元100年1月1日到公元9999年
12月31日
String,包含变长字符串,最大长度可为20亿个字符
Object,包含对象
Error,包含错误号
*-->数组:
静态一维数组:dim 数组名(数组大小),数组基数从零开始
静态多维数组:dim 数组名(第一维大小,第二维大小[,...,第n维大小]),每一维基数从
零开始
动态一维数组:dim 数组名()...redim 数组名(数组大小)...,dim一个没有大小的数
组,一系列变化后用redim设置数组大小,这样就动态地生成了需要的数组,可
以扩充和缩减,缩减数组会导致部分数据丢失
动态多维数组:
关于数组常见的操作:
Lbound(数组名),取得数组的下限下标
Ubound(数组名),取得数组的上限下标
常用下面的方法遍历一个数组,特别是动态数组:
for i=Lbound(数组名) to Ubound(数组名)
......
Next
Erase 数组名,这个是重新初始化数组,释放数组的空间
*-->自定义函数:
sub过程:
sub 函数名([参数列表])
......
end sub
注重过程,没有返回值
function函数:
function 函数名([参数列表])
......
end function
可以带返回值,但不是return,VBScript中没有return,只要在适当的地方让一个变
量=函数名即可
引用自定义函数的办法:
函数名 [参数列表],当有参数列表存在的时候,各个参数用逗号分隔,没有括号
call 函数名([参数列表]),使用call时必须有括号
提前中断自定义函数的办法:
exit sub或exit function
*-->语句:
判断语句:
if..else语句:
if ... then
...
else
...
end if
当然,当是多分支时,出现elseif .. then分支
分支语句:
select case语句:
select case 表达式
case 值1
....
case 值2
....
.....
case else
....
end select
循环语句:
while循环:
while 条件
....
wend
do...loop循环:相对于while ...wend更常用的是do ...loop
do
....
loop while 条件
或
do while 条件
....
loop
或
do
....
loop until 条件
或
do until 条件
....
loop
并且do循环中可以加入判断条件(if...else...语句),在适当的时候就exit
do,终止循环
for循环:
for...next循环:
for 循环变量初使值 to 循环变量终止值 [step 步长]
....
next
for each ... in...next循环:
for each 循环变量 in 数组对象
....
next
for循环的终止:
可以用满足条件时的exit for实现
ASP中其他常用的语句:
With语句: 对一个对象执行一系列的语句
使用:
With 对象名
……(可以省略对象名)
End with
例子:
With response
.write “草履虫”
.write “毛毛”
.clear
End with
Option Explicit语句: 强制要求显式声明脚本中的所有变量
具体描述:
使用 Option Explicit 语句时,必须使用 Dim、Private、Public 或 ReDim
语句显式声明所有变量。如果试图使用未经声明的变量名,则会出现错误
可用 Option Explicit 避免拼错已存在的变量名称。对于作用范围不清楚
的变量,使用此语句可避免发生混淆
使用:
Option Explicit
例子:
Option Explicit ' 强制显示声明变量。
Dim MyVar '声明变量。
MyInt = 10 '未声明变量产生错误。
MyVar = 10 '声明变量不产生错误
Randomize: 初始化随机数生成器
使用:
Randomize
例子:
randomize
num=int(9*rnd)+1 ‘rnd是生成0到1之间的随机数,但是没有
‘randomize时,每次使用的种子是相同的,生
‘成的随机数也就是一样的
response.Write num
On Error: 启用或禁用错误处理程序
使用:
On Error Resume Next
On Error GoTo 0
说明:
On Error Resume Next使程序按照产生错误的语句之后的语句继续执
行, 或是按照最近一次所调用的过程(该过程含有 On Error Resume
Next 语句)中的语句继续运行
如果您已启用 On Error Resume Next 错误处理程序,则可使用 On
Error GoTo 0禁用错误处理程序
一般来说,On Error Resume Next常用
例子:多见于数据库连接
On Error Resume Next
Set Conn=Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source="&Server.MapPath("数据库路径")
If Err.Number<>0 Then ‘如果出现错误,Err.number不为0
‘提示出错
‘出错处理,如Response.End
End if
Execute: 执行一个或多个指定的语句
例子:
S = "Sub Proc2" & vbCrLf
S = S & " Print X" & vbCrLf
S = S & "End Sub"
Execute S
Eval: 计算一个表达式的值并返回结果
格式:[result=]Eval(expression)
说明:
result:可选的。是一个变量,用于接受返回的结果。如果未指定结果,应
考虑使用 Execute 语句代替。
expression: 必需的。可以是包含任何有效 VBScript 表达式的字符串。
注:在 VBScript 中,x=y可以有两种解释。第一种方式是赋值语句,将 y 的值赋予
x。第二种解释是测试 x 和 y 是否相等。如果相等,result 为 True;否则
result 为 False。Eval 方法总是采用第二种解释,而 Execute 语句总是采用
第一种。
*-->asp中常用的常数:
Empty:用于指明未初始化的变量值
Null: 用于指明变量包含的数据无效。此关键字与empty并不相同
Nothing: 用于取消某对象变量与实际对象的关联
True:值等于 -1,表示真
False:值等于0,表示假
具体说明下这几个常数(empty,null,nothing)区别
Dim a '这样a就时empty,判断用a=""或a=0都能返回true
'因为a可能是数字,也可能是字符串类型,当然还可以用
'isempty(a)来测试返回true
Set b=nothing 'nothing是用来表示空对象的,对象初始化用set
'判断对象是否为空必须用下面的语句:
'if b is nothing then
C=null '任何包含null的语句的返回值都为null
'判断是否为null必须用isnull()函数
'另外,没有任何输入的数据库字段值也是null
*-->class类:
---ASP 类的基本结构是:
Class 类名
类代码部分
End class
---引用class办法:
Set 对象名=new 类名
‘使用类中的方法
对象名.方法函数
‘或
Call 对象名.方法函数 ‘区别就是call的括号问题
‘使用完对象要释放
Set 对象名=nothing
---关于定义函数private和public
'private定义的函数可以在本类中使用,不能在类外使用
'public不但能在本类中使用,还能在类外使用
'而默认不写的情况个人认为是public,建议要声明public或者private
'写个例子就明白了(网上关于asp类讲这些明白的很少,自己摸索的,算对面向
'对象的类有了个入门吧:)
'例子:
'定义两个类,第一个类中使用private,public和不用声明
class countnum
private function add(a,b) '私有函数
dim c
c=a+b
response.Write c
end function
public function add2(x,y) '公有函数
dim z
z=x+y
response.Write z
call add(x,y) '引用私有函数
end function
function add3(x,y) '不声明类型
dim z
z=x+y
response.Write z
call add(x,y) '引用私有函数
call add2(x,y) '引用公有函数
end function
end class
class countnum2
public function add4(x,y)
set countnumobj=new countnum'要在类外引用类,需要声明对象
'countnumobj.add(x,y) '类外引用私有函数会导致错误
countnumobj.add2(x,y) '类外引用公有函数
countnumobj.add3(x,y) '类外可以引用不声明类型的函数
end function
end class
'如果是在其他文件引用,先用include把文件包含进来,然后可以set和new创建对
象.
'接着就能使用public定义的方法(不能使用private定义的方法,但是我们一般是
'把内部过程放在private,然后通过public中引用,封装)
---class中的两个事件:
initialize事件:也叫做构造函数,在创建对应的对象时(set ..new..),自动执行.
如:
private sub class_initialize()
response.write "创建对象时自动执行的构造函数"
end sub
terminate事件:也叫做析构函数,在释放对应对象时(set ...nothing),自动执行,
如:
private sub class_terminate()
response.Write "释放对象时自动执行的析构函数"
end sub
---class中的属性:
声明了私有变量(private),而要把外界参数传递给这个私有变量,可以通过属性
关键字有:property let和property get
其中,property let是初始化,property get是获取外界值
结合下面例子说明:
Class myClass
Private strExample '必须的私有变量,我们要从外界访问它
Public Property Let setExample(ByVal strVar) '初始化
strExample = strVar
End Property
Public Property Get Example '获取
Example = strExample
End Property
end class
Dim oneNewClass
Set oneNewClass = new myClass
oneNewClass.setExample = "这是一个简单类的例子" '这里就给let初始化
Response.Write "用户自定义:" & oneNewClass.Example&"<br/>" '使用属性
Set oneNewClass = Nothing
'一个class比较简单但综合点的例子:
<%
class CFish
sub Swim()
response.Write "鱼在游"
end sub
end class
class CBird
sub Fly()
response.write "鸟在飞"
end sub
end class
class CAnimal
dim fish
dim bird
private sub class_initialize()
set fish = new CFish
set bird = new CBird
end sub
private sub class_terminate()
set fish = nothing
set bird = nothing
end sub
end class
dim animal
set animal = new CAnimal
call animal.fish.Swim() '鱼游
call animal.bird.Fly() '鸟飞
set animal = nothing
%>