VBScript入门篇
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.定义一个过程
1 定义一个过程:可以将相同的操作的代码提取出来,方便其他人来调用这段代码,可以减少你的代码的重复性 2 3 4 Option Explicit 5 '@author :yinzhengjie 6 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 7 'EMAIL:y1053419035@qq.com 8 9 10 '定义一个数组 11 Dim ary_1(2) 12 ary_1(0) = 100 13 ary_1(1) = 200 14 ary_1(2) = 300 15 16 17 '定义一个过程的方法,Sub表示一个过程的开始,End Sub表示一个过程的结束标识符 18 Sub max_number(num_1,num_2,num_3) 19 Dim max 20 If num_1 > num_2 Then 21 max = num_1 22 Else 23 max = num_2 24 End If 25 If num_3 > max Then max = num_3 26 MsgBox "最大值是:" & max 27 End Sub 28 29 30 '调用一个过程的方法,用call方法实现,或者是不用,两种区别不大,就是前者有括号,后者无括号 31 Call max_number(1,2,3) '需要用括号将参数传递进去 32 Call max_number(ary_1(0),ary_1(1),ary_1(1)) 33 max_number 4,5,6 '如果不用call调用过程的话,后面传参不需要用括号包裹起来。
二.定义一个函数
1 定义一个函数: 2 3 Option Explicit 4 '@author :yinzhengjie 5 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 6 'EMAIL:y1053419035@qq.com 7 8 '定义一个数组 9 Dim ary_1(2),max 10 ary_1(0) = 100 11 ary_1(1) = 200 12 ary_1(2) = 300 13 14 '定义一个函数,Function表示函数的开始标识符,End Function 表示函数的结束标识符.sub(过程)能实现的Function(函数)都能实现,而且Function比sub功能更加强大,因为它有返回值,请看案例: 15 Function max_number(num_1,num_2,num_3) 16 If num_1 > num_2 Then 17 max_number = num_1 18 Else 19 max_number = num_2 20 End If 21 If num_3 > max Then max_number = num_3 22 'Exit Function表示退出函数 23 End Function 24 25 '调用函数的方法 26 max = max_number(ary_1(0),ary_1(1),ary_1(2)) 27 MsgBox "最大值是:" & max
三.ByRef 和 ByVal 语句区别:
1 ByRef 和 ByVal 语句区别: 2 3 Option Explicit 4 '@author :yinzhengjie 5 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 6 'EMAIL:y1053419035@qq.com 7 8 '定义一个数组 9 Dim ary_1(2),max 10 ary_1(0) = 100 11 ary_1(1) = 200 12 ary_1(2) = 300 13 14 Function max_number(byval num_1,byref num_2,num_3) 15 MsgBox num_1 & "#" & num_2 16 num_1 = 666666 17 num_2 = 888888 18 19 MsgBox num_1 & "#" & num_2 20 End Function 21 22 max_number ary_1(0),ary_1(1),ary_1(2) 23 MsgBox ary_1(0) & "#" & ary_1(1) 24 25 '通过以上的这个案例,我们可以总结如下: 26 'ByVal :表示该参数是按值方式传递的。这个只能让局部生效 27 'ByRef :表示该参数按引用方式传递。表示在局部变量如果改动了某个变量的值,那么会全局生效! 28 '所以不建议用ByRef,因为你只要稍微不注意,就会在全局改变这个变量,我们一般使用的是ByVal
五.变量的作用域与存活期
变量的作用域由声明它的位置决定。如果在过程中声明变量,则只有该过程中的代码可以访问或更改变量值,此时变量具有局部作用域并且是过程级变量。如果在过程之外声明变量,则该变量可以被脚本中所有过程所识别,称为 Script 级变量,具有脚本级作用域。我们可以通过一个脚本来判断作用域,方便我们理解
1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 Dim num 7 8 num = 100 9 10 getmax 11 12 MsgBox num '全局变量 13 14 Function getmax() 15 Dim num 16 num = 666 '局部变量,而且局部变量的名称和全局变量名称重复 17 MsgBox num 18 num = 888 '修改局部变量所对应的值 19 MsgBox num 20 End Function 21 22 '建议实际生产环节中不要在局部变量和全局变量的变量名定义相同的哟,我这里是为了测试,方便大家理解。
变量存在的时间称为存活期。Script 级变量的存活期从被声明的一刻起,直到脚本运行结束。对于过程级变量,其存活期仅是该过程运行的时间,该过程结束后,变量随之消失。在执行过程时,局部变量是理想的临时存储空间。可以在不同过程中使用同名的局部变量,这是因为每个局部变量只被声明它的过程识别。
1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 Dim ary_1(2),max 7 ary_1(0) = 100 8 ary_1(1) = 200 9 ary_1(2) = 300 10 11 '获取两个值中的最大值 12 Public Function get_num(num_1,num_2) 13 pass '我是为了举列子,此处就用pass代替代码了 14 End Function 15 16 17 Public Function get_max(num_1,num_2) 18 get_num 100,200 '调用Public类的函数,不会报错! 19 End Function