使用二进制0 1
计算机可以直接识别
执行效率最高
用户可读性差
架构不同,指令系统也不同
使用符号代替指令
可读性得到增强
计算机不识别,需要汇编翻译代码
依赖硬件、可移植性不好
接近自然语言,可读性好
不依赖计算机硬件;可移植性好
需要翻译或解释
执行效率相对低
C/C++、Java、Python、JavaScript...
早期多使用结构化程序设计,现在多使用面向对象的程序设计 OOP - Object-Oriented Programming
对象
类
封装
继承
移植性好
. 大佬级别
. 需要修改文件后缀名.txt为.vbs才能被浏览器识别
. 可视化开发
. SPD内置脚本编辑器
<meta http-equiv="X-UA-Compatible" content="IE=8,chrome=">
关键字|保留字|系统函数等采用大驼峰,如Dim、For、While、Do、InputBox、MsgBox
其它标识符采用小写,如age、gender
<!DOCTYPE html PUBLIC ...>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=8,chrome=1">
<title>你好世界</title>
</head>
<body>
<script type="text/vbscript">
document.write("hi, there" & "<br>")
</script>
</body>
</html>
| 分类 | 说明 |
|---|---|
| Empty | 未初始化;0或'' |
| Null | 空 |
| Boolean | 布尔型;真True、假False |
| Byte | 字节型;0-255的整数 1个字节8位 最小的数,全0:00000000,即:0 最大的数,全1:11111111,即:255 |
| Integer | 整型;2个字节的整数;-32768到32767 日常使用较多 |
| Long | 整型;4个字节的整数;-2147483648到2147483647 |
| Single | 单精度浮点数;带符号 3.14 |
| Double | 双精度浮点数;带符号 3.1415... |
| Date | 日期型;100.1.1到9999.12.31 日常使用较多 #2023-12-16# |
| String | 字符串型 日常使用较多 "hi, there" |
使用Dim - Dimension 声明一个变量
多个变量使用逗号,分隔
变量必须先声明再赋值;不支持声明的同时马上赋值
可以直接使用变量而不声明;不建议
使用等号=,将右边的值或另外一个变量对应的值赋值给变量
可以声明的时候直接赋值;也可以先声明后面再根据需要赋值
第一个字符必须是字母;其它是字母、数字和下划线组成
不能包括小数点、空格
不能使用系统关键字
长度不超过255
根据变量声明的位置,变量起作用的区域/程序的执行空间可分为:局部/过程作用域和脚本级/全局作用域;相应的变量是局部变量或全局变量
同变量的作用域相关
局部变量:过程开始,变量出现;过程结束,变量消失
全局变量:脚本开始,变量出现;脚本结束,变量消失
只有一个值
多个值
声明的时候,使用括号()和长度表示
数组变量可以是一维和多维;维度使用逗号,分隔
使用的时候,使用索引表示某个元素;第一个元素的索引是0,最后一个元素的索引是长度-1
Dim age ' 声明一个变量 Dim name, addr ' 声明多个变量 age = 18 ' 给age赋值为18 Dim students(88) ' 声明一个长度是 88+1 的一维数组 students(0) = "23011100" ' 给第1个变量赋值 students(87) = "23011187" ' 给倒数第2个变量赋值 students(88) = "23011188" ' 给最后1个变量赋值 Dim arr(2,3) ' 声明一个3行4列的二维数组
'变量声明
dim sn, name, grade, gender, birth
'变量赋值
sn = 20231021
name = "cnplaman"
grade = "2023级播音主持"
gender = "male"
birth=#2020-12-18#
'变量使用
document.write("sn: " & sn & "<br>")
document.write("name: " & name & "<br>")
document.write("grade: " & grade & "<br>")
document.write("gender: " & gender & "<br>")
document.write("birth: " & birth & "<br>")
也称文字常量;无需定义即可直接使用
数值常量,如12、字符串常量,如"hi, there"、日期常量#2023-12-16#
使用标识符表示一个常量
包括:预定义/系统符号常量和自定义符号常量
自定义符号常量使用Const关键字声明
通常使用全部大写,以便和普通变量名、保留字区分
Const PI = 3.14 ' 声明数值型符号常量PT并赋值;3.14是可以直接使用的普通常量 Const SITE = "glpla.github.io" ' 声明字符串型符号常量SITE并赋值;"glpla.github.io"是可以直接使用的普通常量 Const DEADLINE = #1-16-2024# ' 声明日期型符号常量DEADLINE并赋值;需使用#包裹日期
| 分类 | 说明 |
|---|---|
| ^ | 乘方 |
| * / | 乘 除 |
| \ | 整除 |
| MOD | 取模;也叫取余(数) |
| + - | 加 减 |
document.write(5 MOD 3 & "<br>") ' 2 document.write(5 / 3 & "<br>") ' 1.66666666666667 document.write(5 \ 3 & "<br>") ' 1 document.write(5 ^ 3 & "<br>") ' 125 1 + 2 * 14 Mod 17 \ 6 / 2 ' 4
| 分类 | 说明 |
|---|---|
| & | 默认按照字符串拼接运算 将操作数转换为字符串再拼接;推荐使用 excel中连接单元格的值 |
| + | 默认按照算术相加运算 如果两个操作数都是字符串,则是字符串拼接 如果一个操作数是数字,一个操作数是非数字,则尝试将非数字操作数转换为数字再相加;如果无法转换,则提示"类型不匹配" |
document.write("5" & "3" & "<br>") ' 53
document.write(5 & 3 & "<br>") ' 53
document.write("5" & 3 & "<br>") ' 53
document.write(5 & "3" & "<br>") ' 53
document.write(5 + 3 & "<br>") ' 8
document.write("5" + "3" & "<br>") ' 53
document.write("5" + 3 & "<br>") ' 8
document.write(5 + "3" & "<br>") ' 8
| 分类 | 说明 |
|---|---|
| < | 小于 |
| <= | 小于等于 |
| > | 大于 |
| >= | 大于等于 |
| = | 等于 |
| <> | 不等于 |
document.write((5 > 3) & "<br>") ' True document.write((5 < 3) & "<br>") ' False document.write((5 = 3) & "<br>") ' False document.write((5 <> 3) & "<br>") ' True
| 分类 | 说明 |
|---|---|
| And | 与;全为真,结果才为真 |
| OR | 或;有一个为真,结果就为真 |
| Not | 非;非真为假;非假为真 |
document.write((true and true) & "<br>") ' True document.write((true and false) & "<br>") ' False document.write((false and false) & "<br>") ' False document.write((true or false) & "<br>") ' True document.write((true or true) & "<br>") ' True document.write((false or false) & "<br>") ' False
| 分类 | 说明 |
|---|---|
| = | 将表达式的值赋值给变量 |
| 分类 | 说明 |
|---|---|
| 输入语句 | InputBox();获取用户输入 |
| 输出语句 | Document.Write();页面上直接显示 |
| 输出语句 | MsgBox();页面上弹窗显示 |
| 分类 | 说明 |
|---|---|
| Asc(string) | ASCII;字符串首字符的ASCII码 |
| CStr(digit) | string;转换为字符串 |
| CInt(digit) | integer;转换为整型;小数部分四舍五入 |
| CLng(digit) | long;转换为长整型;小数部分四舍五入 |
| CSng(digit) | single;转换为单精度 |
| CDbl(digit) | double;转换为双精度 |
| Chr(digit) | char;将ASCII码转换为字符 |
| Fix(digit) | fix;舍弃小数部分;不四舍五入 |
| Val(string) | value;将字符串转换为数值 |
Asc("ABC") ' 65
CStr(68) ' "68"
CInt(256.57) ' 257
CLng(726.2) ' 726
CSng(89.541117) ' 89.54112
CDbl(1234.5678914) ' 1234.5678914
Chr(65) ' "A"
Fix(12.69) ' 12
Val("2023") ' 2023
| 分类 | 说明 |
|---|---|
| InStr(start, string1, string2) | 在string1中,从start开始查找string2,返回其出现的索引/位置;默认从1开始 |
| LCase(string) | lowercase;转换为小写 |
| UCase(string) | uppercase;转换为大写 |
| Left(string, length) | 从左边截取长度length的字符串 |
| Right(string, length) | 从右边截取长度length的字符串 |
| Len(string) | 字符串的字符个数/长度 |
| Trim(string) | 去除字符串两侧/左右的空格 |
| LTrim(string) | 去除字符串左侧/前面的空格 |
| RTrim(string) | 去除字符串右侧/后面的空格 |
| Mid(string, start, length) | 在string中,从start开始截取长度length的字符串;如果没有长度length,则截取到串尾 |
| String(number, character) | 重复字符串中第一个字符 |
InStr("ABabc","ab") ' 3;位置从1开始!!!
LCase("AbCd") ' abcd
LCase("AbCd") ' ABCD
Left("abcd", 2) ' ab
Right("abcd", 2) ' cd
Len("ABCD") ' 4
Trim(" AB ") ' "AB"
LTrim(" AB ") ' "AB "
RTrim(" AB ") ' " AB"
Mid("hi,there.", 3, 2)',t
Mid("hi,there.", 3)',there.
String(3, "abc") ' aaa
String(3, "A") ' A
Dim name, uNmae, ind, first, last name = "gl.cn" uName = UCase(name) MsgBox(uName) ind = InStr(uName, ".") MsgBox(ind) first = Left(uName, ind - 1) MsgBox(first) last = Mid(uName, ind + 1) MsgBox(last)
| 分类 | 说明 |
|---|---|
| Int(digit) | 取整;取不大于数的整数;不会四舍五入 |
| Round(digit, n) | 数的四舍五入;保留n位小数 |
| Sqr(digit) | square root;数的平方根 |
| Abs(digit) | absolute;数的绝对值 |
| Sgn(digit) | sign;数的符号;正数1;负数-1;0为0 |
| Rnd() | random;0-1之间的随机数,不包括1;半开区间 |
Int(33.6) ' 33 Int(-33.6) ' 34 Round(1.35, 1) ' 1.4 Round(1.239, 2) ' 1.24 Sqrt(16) ' 4 Abs(-20.5) ' 20.5 Sgn(3) ' 1 Sgn(0) ' 0 Sgn(-3) ' -1 Rnd() '随机小数 Int(Rnd()*10) ' 随机生成0-10之间的数字;刷新页面不会重新生成,需要重新打开一个浏览器才会更新
dim rnd1, rnd2, sum
rnd1 = int(rnd()*100)
rnd2 = int(rnd()*100)
document.write("第1个数字是" & rnd1 & "<br>")
document.write("第2个数字是" & rnd2 & "<br>")
sum = rnd1 + rnd2
document.write("和是" & sum & "<br>")
| 分类 | 说明 |
|---|---|
| Date() | 日期;默认格式:日/月/年 年/月/日 |
| Year(date) | 年;4位:YYYY |
| Month(date) | 月;1-12 |
| Day(date) | 天数;1-31 |
| Weekday(date) | 星期几;1-7:星期天-星期六 |
| Time() | 时间;时:分:秒 |
| Hour(time) | 小时;0-23 |
| Minute(time) | 分钟;0-59 |
| Second(time) | 秒;0-59 |
Date() ' 2023/12/5 Time() ' 22:55:32 Day(#2023-12-04#) '4 Month(#2023-12-04#) ' 12 Year(#2023-12-04#) ' 2023 Weekday(#2023-12-04#) ' 2 Hour(#22:58:12 PM#) ' 22 Minute(#22:58:12 PM#) ' 58 Second(#22:58:12 PM#) ' 12
dim digit, tmp0, tmp1, res
digit=int(inputbox("请输入1个数字:1-100"))
document.write("输入的数字是" & digit & "<br>")
tmp0 = digit\10
tmp1 = digit mod 10
document.write("数字的个位是" & tmp0 & "<br>")
document.write("数字的十位是" & tmp1 & "<br>")
res = int(tmp1 & tmp0)
document.write("个位和十位转换后的数字是" & res & "<br>")
根据条件判断程序的走向
使用End If结束选择逻辑
If 条件 Then
语句
End If
If 条件 Then
语句
Else
语句
End If
给定2个数,判断较大数并显示出来[例7-8/P325]
根据输入的年龄判断是否成年
Dim age
age = InputBox("请输入您的年龄")
If age > 18 Then
Document.write("成年")
Else
Document.write("未成年")
End If
根据表达式的值判断程序的走向;通常需要指定默认判断:case else
使用end select结束选择逻辑
Select Case value
Case value1
语句
Case value2
语句
Case value3
语句
Case else
语句
End Select
根据输入的成绩查询档次;使用弹出消息框MsgBox()给出结果[例7-10/P326、例7-11/P327]
Dim score
score = InputBox("请输入您的成绩")
Select Case score\10
Case 6
MsgBox("及格")
Case 7
MsgBox("中")
Case 8
MsgBox("良")
Case 9
MsgBox("优")
Case Else
MsgBox("不及格")
End Select
按指定次数执行语句块
使用一个计数器充当循环变量;每执行1次,循环变量按照一定步长增加会减少
步长可以为负 - 递减循环,也可以为正 - 递增循环;默认是1
超过终值,循环结束
可以嵌套实现多重循环
For 变量 = 初值 To 终值 [Step 步长]
循环体语句
Next
比较最终成绩;7个成绩,去掉最高分和最低分,其它求平均[例7-12/P329]
输出九九乘法表[例7-13/P330]
dim i, j
for i = 1 to 9
for j = 1 to i
document.write( i & "x" & j & " = " & i*j & " ")
next
document.write("<br>")
next
求s = 1 + 2 + 3 + ... + 10 的值[例7-14/P331]
求s = 1 x 2 x 3 x ... x 10 的值[例7-15/P331]
按指定条件执行语句块
Do While 条件
循环体语句
Loop
Do
循环体语句
Loop While 条件
检查用户输入密码是否正确;错误超过3次,结束程序[例7-15/P332]
Sub 过程名[(参数)] 过程体 End Sub
Call Sub 过程名[(参数)]
<script type=“text/VBScript”>
Sub putname(name) '定义过程
Document.Write(name & ", 您好!<BR>")
End Sub
</script>
<script type=“text/VBScript”>
Dim name
name = InutBox("请输入姓名:")
Call putname(name) '调用过程
<script>
Function 函数名([参数]) 函数体 End Function
val = Function 函数名([参数])
<script type=“text/VBScript”>
Sub ConvertTemp()
temp = InputBox("请输入华氏温度。", 1)
MsgBox "温度为 " & Celsius(temp) & " 摄氏度。"
End Sub
Function Celsius(fDegrees)
Celsius = (fDegrees - 32) * 5 / 9
End Function
</script>
| 分类 | 说明 |
|---|---|
| Click | 鼠标左键单击;按下并释放,在MouseUp之后触发 |
| DblClick | 鼠标双击 double click |
| MouseMove | 鼠标移动 |
| MouseDown | 鼠标按下 |
| MouseUp | 鼠标释放 |
| MouseOver | 鼠标移入 |
| MouseOut | 鼠标移出 |
Sub Click() 语句块 End Sub
Sub DblClick() 语句块 End Sub
| 分类 | 说明 |
|---|---|
| KeyPress | 按键;按下并释放;使用较多 |
| KeyDown | 按键按下 |
| KeyUp | 按键释放 |
Private Sub Textl_KeyPress(KeyAscii As Integer) 语句块 End Sub
Sub btn1_OnClick()
If myFont.size < 7 Then
myFont.size = myFont.size + 1
End If
End Sub
Sub btn2_OnClick()
If myFont.size > 1 Then
myFont.size = myFont.size - 1
End If
End Sub
<Font id="myFont" size="3" color="blue">VBScript程序设计</Font> <Form> <Input type="button" name="btn1" value="字体变大"> <Input type="button" name="btn2" value="字体变小"> </Form>