从经典ASP中的函数早期返回

时间:2010-02-04 15:58:01

标签: asp-classic

有没有办法从经典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中无法做到。有没有办法在返回语句所在的位置中断代码执行?

3 个答案:

答案 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结构并过度增加代码中的标识”。如果是这样的话,那么函数中的代码太多了,应该重构为更小的函数。