VBScript 其他语句

VBScript 还有一些其他重要的语句可以帮助开发人员开发高效的脚本。 下表列出了一组此类重要的语句。 在本章中,我们将通过示例详细讨论这些陈述。

类别 函数名称/语句名称
选项 Option Explicit
脚本引擎ID ScriptEngine
变体 IsArray, IsEmpty, IsNull, IsNumeric, IsObject, TypeName
表达式 Eval,Execute
控制语句 With...End With
数学函数 Randomize

Option Explicit

Option Explicit 强制开发人员在代码的某些部分使用变量之前使用 Dim 语句声明变量。

语法

Option Explicit

示例

如果我们使用Option Explicit并且不声明变量,那么解释器将抛出错误。

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Option Explicit
         Dim x,y,z,a
         x = 10
         y = 20
         z = fnadd(x,y)
         a = fnmultiply(x,y)

         Function fnadd(x,y)
            fnadd = x+y
         End Function

      </script>
   </body>
</html>

ScriptEngine

ScriptEngine 表示正在使用的脚本语言的详细信息。 它还与 ScriptEngineMajorVersion、ScriptEngineMinor Version、ScriptEngineBuildVersion 结合使用,分别提供 vbscript 引擎的主要版本、vbscript 引擎的次要版本以及 vbscript 的构建版本。

语法

ScriptEngine 

示例

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim scriptdetails
         scriptdetails =  " Version " & ScriptEngine & " - "
         'For getting Major version, use ScriptEngineMajorVersion'
        
         scriptdetails = scriptdetails &  ScriptEngineMajorVersion & "."
        
         'For getting Minor version, use ScriptEngineMinorVersion'
         scriptdetails = scriptdetails & ScriptEngineMinorVersion & "."
        
         'For getting Build version, use ScriptEngineBuildVersion'
         scriptdetails = scriptdetails & ScriptEngineBuildVersion 
        
         Document.write scriptdetails

      </script>
   </body>
</html>

在 IE 中执行脚本后,以 .html 扩展名保存文件,屏幕上会显示以下结果。

Version VBScript - 5.8.16996 

IsEmpty

函数 IsEmpty 用于检查表达式是否为空。 它返回一个布尔值。 如果变量未初始化或显式设置为 Empty,IsEmpty 返回 True。 否则表达式返回 False。

语法

IsEmpty(expression) 

示例

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim var, MyCheck
         MyCheck = IsEmpty(var)  
         Document.write "Line 1 : " & MyCheck & "<br />"
        
         var = Null   ' Assign Null.
         MyCheck = IsEmpty(var) 
         Document.write "Line 2 : " & MyCheck & "<br />"
         
         var = Empty   ' Assign Empty.
         MyCheck = IsEmpty(var)
         Document.write "Line 3 : " & MyCheck & "<br />"
        
      </script>
   </body>
</html>

以.html为扩展名保存文件,在IE中执行脚本后,屏幕上会显示以下结果。

Line 1 : True
Line 2 : False
Line 3 : True

IsNull

函数 IsNull 用于检查表达式是否具有有效数据。 它返回一个布尔值。 如果变量为 Null,IsNull 返回 True,否则表达式返回 False。

语法

IsNull(expression) 

示例

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim var, res
         res = IsNull(var)
         document.write "Line 1 : " & res & "<br />"
         
         var = Null
         res = IsNull(var)
         document.write "Line 2 : " & res & "<br />"
         
         var = Empty
         res = IsNull(var)
         document.write "Line 3 : " & res & "<br />"

      </script>
   </body>
</html>

以.html为扩展名保存文件,在IE中执行脚本后,屏幕上会显示以下结果。

Line 1 : False
Line 2 : True
Line 3 : False

IsObject

IsObject 函数用于检查表达式是否具有有效的对象。 它返回一个布尔值。 如果表达式包含对象子类型,IsObject 返回 True,否则表达式返回 False。

语法

IsObject(expression)

示例

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
        Dim fso,b
        b = 10
        set fso = createobject("Scripting.Filesystemobject")
        
        x = isobject(fso)
        Document.write "Line 1 : " &  x  & "<br />" 
        
        y = isobject(b)
        Document.write "Line 2 : " &  y  & "<br />" 

      </script>
   </body>
</html>

以.html为扩展名保存文件,在IE中执行脚本后,屏幕上会显示以下结果。

Line 1 : True
Line 2 : False

IsNumeric

IsNumeric 函数用于检查表达式是否具有数字子类型。 它返回一个布尔值。 如果表达式包含数字子类型,IsObject 返回 True,否则表达式返回 False。

语法

IsNumeric(expression)

示例

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim var, chk
         var = 20
         chk = IsNumeric(var)
         Document.write "Line 1 : " &  chk  & "<br />" 
        
         var = "3.1415935745"   
         chk = IsNumeric(var)   
         Document.write "Line 2 : " &  chk  & "<br / >" 
        
         var = "20 Chapter 23.123 VBScript"   
         chk = IsNumeric(var)
         Document.write "Line 3 : " &  chk  & "<br / >" 

      </script>
   </body>
</html>

在 IE 中执行脚本后,以 .html 扩展名保存文件,屏幕上会显示以下结果。

Line 1 : True
Line 2 : True
Line 3 : False

TypeName

TypeName函数用于返回变量的变体子类型信息。

语法

TypeName(varname)

Typename 函数可以返回以下任意值。

  • Byte − Byte Value

  • Integer − Integer Value

  • Long − Long Integer Value

  • Single − Single-precision floating-point Value

  • Double − Double-precision floating-point Value

  • Currency − Currency Value

  • Decimal − Decimal Value

  • Date − Date or Time Value

  • String − Character string Value

  • Boolean − Boolean Value

  • Empty − Uninitialized Value

  • Null − No Valid Data

  • Object − typename of Object

  • Nothing − Object variable that doesn't yet refer to an object instance

  • Error

示例

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim ArrVar(2), vartype
         NullVar = Null   ' Assign Null value.

         vartype = TypeName(3.1450)     
         Document.write "Line 1 : " &  vartype  & "<br />" 
         
         vartype = TypeName(432)         
         Document.write "Line 2 : " &  vartype  & "<br />" 
         
         vartype = TypeName("Microsoft")
         Document.write "Line 3 : " &  vartype  & "<br />" 
         
         vartype = TypeName(NullVar)   
         Document.write "Line 4 : " &  vartype  & "< br />" 
         
         vartype = TypeName(ArrVar)    
         Document.write "Line 5 : " &  vartype  & "<br />"

      </script>
   </body>
</html>

以.html为扩展名保存文件,在IE中执行脚本后,屏幕上会显示以下结果。

Line 1 : Double
Line 2 : Integer
Line 3 : String
Line 4 : Null
Line 5 : Variant()

Eval

Eval 函数执行表达式并以字符串或数字形式返回结果。

语法

Eval(expression)

参数表达式可以是字符串表达式或数字。 如果向 Eval 函数传递一个不包含数值表达式或函数名称而仅包含简单文本字符串的字符串,则会发生运行时错误。 例如,Eval("VBScript") 会导致错误。

示例

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Document.write Eval("10 + 10") & "<br />"
         Document.write Eval("101 = 200") & "<br />" 
         Document.write Eval("5 * 3") & "<br />" 

      </script>
   </body>
</html>

以.html为扩展名保存文件,在IE中执行脚本后,屏幕上会显示以下结果。

20
false
15

Execute

执行语句接受参数,该参数是包含一个或多个要执行的语句的字符串表达式。

语法

Execute(expression)

在 VBScript 中,a = b 可以有两种解释方式。 它可以被视为一个赋值语句,其中 x 的值赋给 y。 它也可以解释为测试 a 和 b 是否具有相同值的表达式。 如果这样做,结果为 True; 如果不是,结果为 False。 Execute 语句始终使用第一种解释,而 Eval 语句始终使用第二种解释。

示例

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim x
         x = "Global" 
         y = "VBScript"
         Execute("x = y")
         
         msgbox x
         msgbox y
        
      </script>
   </body>
</html>

以.html为扩展名保存文件,在IE中执行脚本后,屏幕上会显示以下结果。

VBScript
VBScript

With..End With

With 语句允许我们对指定对象执行一系列操作,而无需一次又一次显式提及对象名称。

语法

With (objectname)
   statement 1
   statement 2
   statement 3
   ...
   ...
   statement n
End With

示例

执行以下脚本后,Winword 将打开并输入指定的文本。

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Msg =  "Vbscript" & vbCrLf & "Programming"
         Set objWord = CreateObject("Word.Application")
         objWord.Visible = True
       
         ' Objects methods are accessed without requaliyfying the objects again.'
         With objWord
            .Documents.Add
            .Selection.TypeText Msg
            .Selection.WholeStory
         End With
         
      </script>
   </body>
</html>

Randomize

Randomize语句初始化随机数生成器,这有助于开发人员生成随机数。

语法

Randomize [number]

示例

执行以下脚本后,Winword 将打开并输入指定的文本。

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim MyValue
         Randomize   
         MyValue = Int((100 * Rnd) + 1)   ' Generate random value between 1 and 100.
         MsgBox MyValue
        
      </script>
   </body>
</html>

将上述脚本保存为 HTML,并在 IE 中执行该脚本时,将显示以下输出。

42