多年来,我一直在使用Else If
来编写VBScript代码......
If a = b Then
...
Else If a = c Then
...
End If
这似乎按要求工作。除了使用Else If
的MSDN之外,我还在网上看到了许多使用ElseIf
的网站。
ElseIf
与Else If
之间是否存在差异?
<击> 这是我之前编写的一个通过Classic ASP工作正常的方法:
If IsDate(wD) Then
wS = wD
Else If wD&"" <> FormatDisplayDate(wS) Then
wS = WeekStart(Date())
wD = FormatDisplayDate(wS)
End If
这是一段较旧的代码片段,由其他人编写......
if opip = "IP" then
opip = "In Patient"
Else If opip = "OP" then
opip = "Out Patient"
End If
这些都不是通过编译器运行的,但是,它们都被解释了。
击><击> 撞击>
忽略那个垃圾 - 我搞砸了一个搜索并在IDE中替换。
答案 0 :(得分:3)
Else If
将嵌套的If
置于第一个Else
语句的If
分支中,而ElseIf
是初始If
语句的一部分
基本上它是两个双向条件(一个嵌套在另一个中)
If condition Then
...
Else
If condition Then
...
Else
...
End If
End If
vs一个n-way条件
If condition Then
...
ElseIf condition Then
...
Else
...
End If
并且,正如https://jsfiddle.net/1fhbha4o/1/指出的那样,前者应该在没有关闭嵌套End If
的情况下引发错误。
答案 1 :(得分:3)
该示例代码不编译并产生编译错误
Microsoft VBScript编译错误:预期&#39;结束&#39;
因为我期待(作为@ekkehard-horner point's out in the comments)。
我从未知道ElseIf
以detailed in MSDN的方式工作。我唯一能想到的是你把它写成嵌套的If
语句。
If a = b Then
...
Else If a = c Then
...
End If
End If
看起来很丑,但和写作一样
If a = b Then
...
Else
If a = c Then
...
End If
End If
这种方法的问题是你最终在嵌套的If
语句中遇到了未处理的条件。例如a = d
会发生什么?
您需要确保嵌套的If
抓住了ElseIf
声明不需要的额外条件。
If a = b Then
...
Else
If a = c Then
...
Else
...
End If
End If
ElseIf
方法将是;
If a = b Then
...
ElseIf a = c Then
...
Else
...
End If
Interesting musing由@eric-lippert (VBScript编译器背后的程序员之一)在评论的海洋中......值得一读。我当然学到了一些东西。