[ASP]If语句多个表达式运算时书写注意事项

我们先来看一个例子:

<%
If fun1() And fun2() Then
    Response.Write("yes"&"<br/>")
Else
    Response.Write("no"&"<br/>")
End If

Function fun1()
    Response.Write("fun1"&"<br/>")
    fun1 = False
End Function

Function fun2()
    Response.Write("fun2"&"<br/>")
    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等运算符也都有同样的问题,程序代码书写时一定要注意。

评论: 0 | 引用: 0 | 查看次数: 3274
发表评论
登录后再发表评论!