有没有办法从经典ASP中的函数提前返回而不是运行函数的全长?例如,假设我有函数...
Function MyFunc(str)
if (str = "ReturnNow!") then
Response.Write("What up!")
else
Response.Write("Made it to the end")
end if
End Function
我能这样写吗......
Function MyFunc(str)
if (str = "ReturnNow!") then
Response.Write("What up!")
return
end if
Response.Write("Made it to the end")
End Function
请注意返回语句,当然我在经典ASP中无法做到。有没有办法在返回语句所在的位置中断代码执行?
答案 0 :(得分:33)
是使用exit function
。
Function MyFunc(str)
if str = "ReturnNow!" then
Response.Write("What up!")
Exit Function
end if
Response.Write("Made it to the end")
End Function
我通常在从函数返回值时使用它。
Function usefulFunc(str)
''# Validate Input
If str = "" Then
usefulFunc = ""
Exit Function
End If
''# Real function
''# ...
End Function
答案 1 :(得分:4)
使用经典ASP,您需要使用Exit Function
:
Function MyFunc(str)
if (str = "ReturnNow!") then
Response.Write("What up!")
Exit Function
end if
Response.Write("Made it to the end")
End Function
答案 2 :(得分:3)
正如已经指出的那样,可以使用Exit Function
但你应该谨慎使用。在简单的例子中,你给出了没有其他代码执行的优势
反正。
在整个代码块中放置出口点会使得难以跟踪和调试。更严重的是,它可能导致后续的代码更改变得更加困难,需要进行更广泛的更改,从而增加风险。因此,这种模式应被视为“难闻的气味”。
一个典型的场景,它可以合理地接受代码可以在继续代码体之前对其输入参数进行一些断言。除此之外,你应该能够表达一个非常非常好的理由去做。
您可能会说“如果我这样做,我会有更多的If
结构并过度增加代码中的标识”。如果是这样的话,那么函数中的代码太多了,应该重构为更小的函数。