ASP中If else語句多個運算式運算時注意事項

來源:互聯網
上載者:User

我們先來看一個例子:

 代碼如下 複製代碼

<%
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等運算子也都有同樣的問題,程式碼書寫時一定要注意。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.