木子屋 Dnawo's BLOG

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

👤 dnawo 📅 2014-11-08 👁 4465 👍 0 💬 0 🔄 本站原创
我们先来看一个例子:

<%
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)

暂无评论。

计算题
评论需审核通过后显示
← 上一篇 ASP动态数组下标越界解决方法 下一篇 → 淘宝店铺数据诊断及结果