我们先来看一个例子:
代码如下 |
复制代码 |
<%
If fun1() And fun2() Then
Response.Write("yes"&" ")
Else
Response.Write("no"&" ")
End If
Function fun1()
Response.Write("fun1"&" ")
fun1 = False
End Function
Function fun2()
Response.Write("fun2"&" ")
fun2 = True
End Function
%>
|

根据上图可知,fun1返回False时还调用了fun2(C#等语言有做了优化不会调用fun2),因而当前后表达式有关系时用上边写法程序可能会出错:
代码如下 |
复制代码 |
<%
Dim number : number = "mzwu.com"
If IsNumeric(number) And Instr(number,".")=0 And CInt(number)>=10 Then
Response.Write("yes")
Else
Response.Write("no")
End If
%>
|
前两个表达式用于确定number为整数,但CInt还是被调用了,真让人抓狂,没办法,设计使然,改成If嵌套结构可解决:

代码如下 |
复制代码 |
<%
Dim number : number = "mzwu.com"
If IsNumeric(number) And Instr(number,".")=0 Then
If CInt(number)>=10 Then
Response.Write("yes")
Else
Response.Write("no")
End If
Else
Response.Write("no")
End If
%>
|
其他Or等运算符也都有同样的问题,程序代码书写时一定要注意。