使用二进制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>