3.1脚本语言概述(次重点)
1.脚本语言是就是一种介于HTML语言和Visual Basic、Java等高级语言之间的一种语言。
2. ASP程序的脚本语言有VBScript和JavaScript等语言,系统的默认为VBScript语言。
3. ASP可以理解为就是把脚本语言放在<%和%>之间,一般在服务器端运行.
3.2VBScript的基本格式(次重点)
1.在服务器端运行的脚本语言主要有:
格式一:
<%VBScript 代码%>
格式二:
<Script Language=”VBScript” runat=”Server”>
2.在客户端运行的脚本语言
<Script Language=”VBScript”>
VBScript 代码
</Script>
3.3VBScript的数据类型(次重点)
1. 在VBScript,只有一种数据类型,称为Variant,也有叫做变体类型。Variant变量中保存的数据类型称为变量的子类型。
2. 常见的字类型有字符串、数字、日期、逻辑类型
<%
Variable=2001 ‘VBScript会将它当成整数对待
Variable=”2001” ‘VBScript会将它当成字符串对待
Variable=”北京大学”‘VBScript会将它当成字符串对待
Variable=“2008-8-8” ‘VBScript会将它当日期对待
%>
3.4VBScript常量(次重点)
3.4.1 直接常量(识记)
1. 直接常量也称为字面常量,指的是可以从字面形式上辨别出来的常量,其实就是我们通常说的常数
2. 常量类型
两边加双引号(")表示字符串常量
不加双引号的是数字常量
如果发生引号嵌套,就将内层引号替换为单引号(')或连续两个双引号(""),比如"ab'cd'ef"或"ab""cd""ef"。不过,内层如果是中文引号则不必替换。
两边加#号表示日期或时间常量。
- 所谓符号常量,指的是用一个具有一定含义的直观的名字来代表一个数值、字符串或日期等常数
- 分类:
自定义常量
声明使用Const语句,语法如下:
<%Const PI=3.1415926 表示数值型常量
Const conCountry="中国" 两边加"表示字符串型常量
Const conBirthday=#1990-9-9# 两边加#表示日期或时间常量
%>
内置符号常量
如:vbLongDate就表示以长日期格式显示
3.5VBScript 变量(次重点)
1.在程序运行中,其值可以改变的量是变量
2.严格说来,变量代表内存中具有特定属性的一个存储单元,它用来存放数据,也就是变量的值。为了方便引用,我们可以给这个存储单元定义一个名字,这就是变量的名称 。
3.变量与常量非常类似,只不过常量一经声明其值就不能改变了,而变量在声明后仍可随时对其值进行修改。
3.5.1 变量的命名规则(识记)
VBScript的变量命名规则
1.变量名必须以字母开头;
2.可以使用字母、数字和下划线,但不能使用任何标点符号;
长度不能超过255个字符;
3.不能使用VBScript的关键字,所谓关键字,就是Const、Dim、Sub、End等在语法中使用的一些特殊字符串。
3.5.2 变量的声明、赋值和引用(识记)
1. 声明(定义)变量
<%Dim intA '声明一个变量intA %>
2.变量的赋值
intA=10+20*3
变量的引用,可以将变量直接赋值给另外一个变量,也可以将变量引用到表达式
<%
Dim intA,intB,intC '声明3个变量
intA=5 '给变量intA赋值
intB=5 '给变量intB赋值
intC=intA+intB '引用变量intA和intB,将两者之和赋给变量intC
%>
1.在ASP文件中所有的脚本语句之前添加Option Explicit语句,用法如下:
<% Option Explicit %>
2.添加了Option Explicit语句后,如果使用变量前没有预先声明,调试程序时就会报错。
3.5.4 变量的作用范围和有效期(理解)
1. 作用范围也称作用域,VBScript中,变量的作用范围是由变量的声明位置决定的
过程级变量:在一个过程内声明的变量,则只有在这个过程中的代码才可以使用该变量。
脚本级变量:在所有过程之外声明的变量,则该文件中的所有代码均可以使用该变量
2. 有效期也称存活期,表示变量在什么时间范围内可以使用该变量。
过程级变量的有效期就是该过程的运行时间,过程结束后,变量就随即消失了;脚本级变量的有效期就是从它被声明那一刻到整个代码的结束
3.6VBScript数组(次重点)
3.6.1 数组的命名、声明、赋值和引用(识记)
1. 数组代表内存中具有特定属性的若干连续的存储单元
2. 数组的命名、声明、赋值
<%Dim intA(2) rem声明一个有三个元素的数组
intA(0)=1 '给第1个数组元素变量赋值
intA(1)=2 '给第2个数组元素变量赋值
intA(2)=3 '给第3个数组元素变量赋值
rem数组索引从0开始计数%>
1.多维数组的引用和赋值和一维数组是一样的,只不过括号中的第1个数字表示所在行,第2个数字表示所在列
举例:声明一个3行4列的二维数组 Dim intA(2,3) 数组索引从0开始计数 。
下面是该二维数组的结构示意图:
1.变长数组又称为动态数组,意思是声明数组时可以不确定数组元素个数,以后根据需要再确定。
2.声明变长数组 语法如下:
Dim intA() ,声明方法和定长数组类似,只是在括号中不指名数组长度而已。当需要使用的时候,可以用Redim语句重新声明该数组。如:
Redim intA(3) '重声明数组,长度为4
Redim数组后,原有的数值就全部清空了。如果希望保留原有元素的数值,在Redim语句中需要添加Preserve参数,例如:
<% Redim Preserve intA(5) %>
3.7VBScript的运算符和表达式(次重点)
- VBScript继承了VB的所有类别的运算符,包括算术运算符、连接运算符、比较运算符和逻辑运算符
- 运算符的优先级,算术运算符>连接运算符>比较运算符>逻辑运算符。
- VBScript主要包含三种不同的表达式:
数学表达式(如3+5*7)、
字符串表达式(如"ab" & "cd")
条件表达式(如5>3)
3.7.1 算术运算符和数学表达式(理解)
算术运算符和数学表达式主要用于常规的数学运算。
双目运算符
如:intResult=intA^2+intB^2 '求两个变量的平方和
单目运算符
intResult=-5 '求负数,结果为-5
算术运算符在实际运算中是有优先顺序的 ,依次为^、-(求负)、*和/、\、Mod、+和-。当然,大家也可以使用括号任意改变运算顺序。
大部分运算符两边不需要留空格,但是少数容易混淆的运算符两边必须留空格,如Mod。
连接运算符和字符串表达式(理解)
1.连接运算符和字符串表达式主要用于将若干个字符串连接成一个长的字符串 。
2.&运算符表示强制连接,不管两边的操作数是字符串、数值、日期还是布尔值,它都会把它们自动转化为字符串然后连接到一起
如:strResult="ab" & "cd“ '结果为"abcd“
3.+运算符也可以用于连接字符串,但只有两个操作数都是字符串时才执行连接运算;如果有一个操作数是数值、日期或者布尔值,就执行相加运算。此时,如果有一个操作数无法转换成可以相加的类型,就会出错。
比较运算符和条件表达式(理解)
1.常用的比较运算符包括=、<>、>、<、>=和<=,这些运算符执行后的结果为True(真)或False(假)
如:blnResult=5>3 '对两个数字进行比较,结果为True
blnResult=#2008-1-1#<#2008-8-8# '对两个日期进行比较,结果为True
2.比较运算符在实际运算中是没有优先顺序的,按从左到右的顺序进行 。
逻辑运算符(理解)
1.逻辑运算符是对两个布尔值(True或False)或两个比较表达式进行一系列的逻辑运算,然后再返回一个布尔值结果。
2.常用的逻辑运算符有And(逻辑与)、Or(逻辑或)和Not(逻辑非),运算规则如下:
(1)And表示并且,只有两个操作数都是True的时候,结果才为True,否则为False;
(2)Or表示或者,只要两个操作数中有一个是True,结果就为True,否则为False;
(3)Not表示求反,它是单目运算符,只要一个操作数,当操作数是True的时候,结果为False,当操作数为False时,结果为True。
3.还有其他几个不太常用的逻辑运算符 :Xor 、Eqv 、Imp
1.算算术运算符>连接运算符>比较运算符>算逻辑运算符 。
2.不过,建议大家没有必要去记这些顺序,在编程时可以充分利用括号“()”来改变运算顺序,最后达到自己的要求
3.8VBScript函数(重点)
所谓函数,指的是由若干语句组成的程序模块,它可以实现一个特定的功能,并返回一个函数值。
函数分类:
内部函数即系统函数,如Time().
自定义函数:为了实现某个特定功能,自己编写的程序模块。
使用函数时要特别注意函数参数的个数和类型。
1.数学函数包括取整函数、随机函数、绝对值函数、三角函数和指数函数等,它们的参数和返回的函数值一般都是数值。
2.常用的数学函数:
Int(number) fix(number) 返回数字的整数部分
区别:
当number为负数时fix(number)返回大于等于number的整数
当number为正数是int(number)返回小于等于number的整数
Round(number[,decimal]) 返回按指定位数进行四舍五入的数值
Number将执行四舍五入的数字
Decimal四舍五入几位小数
Rnd([number]) 返回一个随机数字
number 参数可以是任意有效的数值表达式。
1.字符串函数可以实现对字符串进行截头去尾、大小写替换等操作 。
2.常用字符串函数:
返回字符串内字符的数目,或是存储一变量所需的字节数Len(string)返回字符串的小写形式LCase(string)
返回字符串的大写形式。 UCase(string)
返回不带前导空格、Ltrim(string)、后续空格Rtrim(string) 或前导
后续空格Trim(string) 的字符串副本
从字符串中返回指定数目的字符。Mid(string,start[,length])
返回指定数目的从字符串的左边算起的字符Left(string,length)
从字符串右边返回指定数目的字符Right(string,length)
返回字符串,其中指定数目的某子字符串被替换为另一个子字符串Replace(string, find, replacewith)
返回 某字符串在另一字符串中第一次出现的位置InStr(string1, string2)
1.使用日期和时间函数来得到各种格式的日期和时间
2.常用日期和时间函数 :
Now() 、Date() 、
返回 Date 子类型 Variant,指示当前系统时间。 Time()
返回一个代表某年的整数Year(date) 、
返回 1 到 12 之间的一个整数(包括 1 和 12),代表一年中的某月。Month(date)
返回 1 到 31 之间的一个整数(包括 1 和31),代表某月中的一天Day(date)
返回 0 到 23 之间的一个整数(包括 0 和 23),代表一天中的某一小时。Hour(time)
返回 0 到 59 之间的一个整数(包括 0 和59),代表一小时内的某一分钟Minute (time)
返回 0 到 59 之间的一个整数(包括 1 和 59),代表一分钟内的某一秒Second(time)
返回代表一星期中某天的整数。WeekDay(date)
返回已添加指定时间间隔的日期DateAdd(interval,number, date)
返回两个日期之间的时间间隔DateDiff(interval, date1, date2)
常用数组函数 :
返回指定数组维数的最大可用下标UBound(arrayname[, dimension])
返回基于 0 的一维数组,其中包含指定数目的子字符串Split(string[, delimiter])
返回一个字符串,此字符串由包含在数组中的许多子字符串连接创建Join(arrayname [, delimiter])
返回包含数组的 Variant Array(arglist)
格式化函数(理解)
需要将数值或日期按指定的格式显示 ,此时就需要用到格式化函数。
常用的格式化函数 :
FormatNumber(number [, decimal]) :返回格式化后的数值。如: FormatNumber(3.1415926,3),返回3.141
FormatDateTime(Date[, namedFormat]) :返回格式化后的日期和时间字符串。 如:FormatDateTime(#2008-9-28 12:39:32#,1),返回"2008年9月28日"
VBScript会自动转换数据子类型以满足计算的需求,但有时候,也需要使用转换函数来强制转换数据子类型。
常用的转换函数 :
CStr(variant) :转化为字符串子类型
CInt(variant) :转化为整数子类型
CDate(variant) :转化为日期子类型
很多时候需要判断一个变量究竟是什么数据子类型 ,此时就需要用到检验函数。
常用的检验函数
IsNumeric(variant) :如果可以转换为数值,则返回True
IsDate(variant) :如果可以转换为日期,则返回True
IsArray(variant) :如果是数组,则返回True
IsNull(variant) :如果不包含任何有效数据,则返回True
3.9VBScript过程(重点)
- 在VBScript中,过程有两种,一种是Sub子程序,一种是Function函数。两者的区别在于:Sub子程序只执行程序而不返回值,而Function函数执行程序后会返回值。
3.9.1 Sub子程序(识记)
- Sub子程序的语法如下:
Sub 子程序名([形式参数1,形式参数2,…])
……
End Sub
- 调用子程序的两种方式:
(1)Call 子程序名([实际参数1,实际参数2,…])
(2)子程序名 [实际参数1,实际参数2,…]
3.9.2 Function函数(识记)
Function函数的语法如下:
Function 函数名([形式参数1,形式参数2,…])
……
End Function
调用函数
变量= Function 函数名(参数1,参数2,…)
函数可以向变量一样引用和参与运算
子程序和函数的位置
1.子程序和函数可以放在ASP文件的任意位置中,也可以放在另外一个ASP文件中,当使用时,可以利用<!--#Include file=“文件路径”-->语句,包含该函数文件即可。
2.改写上一个函数示例为两个文件,其中示例3-7是主程序,用来调用函数,而示例3-8专门用来保存函数.
3.10使用条件语句
1. If…Then…Else语句
If…Then…Else语句用于判断条件是True或False,然后根据判断结果指定要运行的语句。
2.If语句的几种形式:
(1) If 条件表达式 Then 程序语句
(2) If 条件表达式 Then
程序语句块
End If
(3) If 条件表达式 Then
程序语句块1
Else
程序语句块2
End If
(4) If 条件表达式1 Then
程序语句块1
ElseIf 条件表达式2 Then
程序语句块2
Else
程序语句块N+1
End If
3.10.2 Select Case语句
Select Case语句是If…Then…Else…End If语句多条件时的另外一种形式,适当使用,可以使程序更简洁方便。
Select Case语句语法如下 :
Select Case 变量或表达式
Case 结果1
程序语句块1
Case 结果2
程序语句块2
……
Case 结果N
程序语句块N
Case Else
程序语句块N+1
End Select
3.11使用循环语句
3.11.1 For…Next循环
1.For…Next循环是一种强制型的循环。在循环的过程中,可以指定循环的次数,当到达循环运行次数之后,即退出循环。
语法如下:
For counter=start To end [Step stepsize]
程序语句块
Next
3.11.2 Do…Loop循环
1.Do…Loop循环是当条件为True或条件变为True之前,一直重复执行。
2.它的语法有如下几种形式 :
(1)Do While 条件表达式
程序语句块
Loop
(2)Do程序语句块
Loop While 条件表达式
(3)Do Until 条件表达式
程序语句块
Loop
(4)Do
程序语句块
Loop Until 条件表达式
3.11.3 While…Wend循环
1.While…Wend循环是当条件表达式值为True时,执行循环,否则跳出循环,与Do…Loop循环非常相似。
2.语法如下:
While 条件表达式
程序语句块
Wend
将前面示例中的Do…Loop循环语句替换为如下的语句,执行结果是一样的。
While I<=100
lngSum=lngSum+I^2
I=I+1
Wend
3.11.4 For Each…Next 循环
1.For Each…Next 循环是对数组和集合中的元素进行枚举(一一列举),当枚举结束后就会退出循环。
2.它的语法如下:
For Each 元素 In 集合
程序语句块
Next
3.11.5 循环嵌套
3.11.6 使用Exit语句强行退出循环
1.一般情况下,都是满足循环结束条件后退出循环,但有时候需要强行退出循环。在For…Next和Do…Loop循环中,强行退出的语句分别是Exit For和Exit Do。
2.Exit语句也可以用来退出子程序和函数,语句分别为Exit Sub和Exit Function。
3.不过Exit语句通常是和If语句结合使用的。例如:
lngSum=0
For I=1 to 100
lngSum=lngSum+I^2
'如果大于10000,则强行退出循环
If lngSum>10000 then Exit For
Next
Response.Write "最后的结果是:" & lngSum
3.12注释语句
- 注释语句不执行,也不会显示在页面上,只是在自己和别人阅读源文件时才能看到。添加注释语句主要是为了方便以后阅读程序。
- 一般用Rem或 ‘符号(单撇号)来表示该符号所在行的语句是注释语句
- 用法如下:
- <% sngA=Rnd() '返回一个随机数 %>或
- <% sngA=Rnd() Rem 返回一个随机数 %>
3.13容错语句
- 容错语句用在当程序发生错误时,但又不希望程序终止,也不希望将错误暴露在访问者面前时。
- 容错语句为:<% On Error Resume Next %>,在程序中加入该条语句后,当碰到错误时,就会跳过去继续执行下一句。
但是调试程序时不要添加该语句,否则在页面上就不会看到错误信息了。
3.14本章小结
1.重点掌握字符串相关知识,连接符和字符串等函数。
2.会写VBScript过程。
3.重点研究判断和循环语句。仔细揣摩嵌套示例