使用之前检查值类型
VBScript 是“弱类型”编程语言。这意味着您可以创建、使用和访问数据值,而无需一开始就声明其类型。但是,某些操作只能对特定类型的值执行。因此,对它们执行任何操作之前先检查数据类型是很重要的。
不同类型的值在不同语句中有不同的行为。对象值的行为甚至更不可预知,因为行为取决于对象的实现。例如,调用 <实体>_CanDelete(Entity) 中的对象可以是文本或主题节点。
建议
要避免不可预知的结果:
-
使用之前先检查值的类型,尤其是对象类型。检查对象类型时,还检查对象有无您访问的属性。
备注: 在此
-
假定尽可能少 - 不要假定某值属于特定类型。通过使用 Else 语句和 Select Case 语句,编写可以处理所有可能性的脚本。
-
使用不同的 VBScript 函数之前,始终要检查参数类型,如 IsArray、IsDate、IsNull、IsEmpty、IsNumeric 和 IsObject。
-
不要假定对象的默认属性属于特定类型;类型可能随对象而不同。
-
使用 VBScript 内置的转换函数可以实现一定程度的类型安全。
-
使用对象时,请调用 IsNull 和 IsEmpty 函数,来检查确认收到的值既不是 Null 也不为 Empty。
示例: 为以下示例目的,假定字段值如下表中所示声明。
|
字段值 |
类型 |
|---|---|
|
|
整数 |
|
|
字符串 |
|
|
实现 ISysTreeNode 接口的对象 |
以下示例中,语句用法是正确的。整数已转换为字符串。
If Bug_Fields["BG_BUG_ID"].Value = "10" Then...
以下示例中,语句用法是正确的。字符串可比较。
If Bug_Fields["BG_SUMMARY"].Value = "some text" Then...
以下示例中,语句用法是错误的。仅当 BG_SUBJECT 字段的值既不是 Empty 也不是 Null 时,此代码才能起作用。VBScript 还假定此对象的默认值(即默认属性)是字符串类型或与字符串类型可比较,但实际情况并非总是如此。
If Bug_Fields["BG_SUBJECT"].Value = "My Tests" Then...

