If statement ElseIf vs ElseIf
多年来,我一直在使用If statement ElseIf vs ElseIf,if-statement,vbscript,syntax,semantics,If Statement,Vbscript,Syntax,Semantics,多年来,我一直在使用Else If在VBScript中编码 If a = b Then ... Else If a = c Then ... End If 它似乎按要求工作。我在网上也看到很多网站使用了Else If,除了MSDN使用ElseIf ElseIf与Else If之间是否存在差异 一小条 这是我之前编写的一个,它在经典ASP中运行良好: If IsDate(wD) Then wS = wD Else If wD&"" <> Format
Else If
在VBScript中编码
If a = b Then
...
Else If a = c Then
...
End If
它似乎按要求工作。我在网上也看到很多网站使用了Else If
,除了MSDN使用ElseIf
ElseIf
与Else If
之间是否存在差异
一小条
这是我之前编写的一个,它在经典ASP中运行良好:
If IsDate(wD) Then
wS = wD
Else If wD&"" <> FormatDisplayDate(wS) Then
wS = WeekStart(Date())
wD = FormatDisplayDate(wS)
End If
这些都不是通过编译器运行的,但是都是经过解释的
忽略那些垃圾-我在IDE中搞砸了搜索和替换。
Else If
将嵌套的If
放在第一个If
语句的Else
分支中,而ElseIf
是初始If
语句的一部分
基本上是两个双向条件(一个嵌套在另一个中)
vs单向条件
If condition Then
...
ElseIf condition Then
...
Else
...
End If
并且,正如所指出的,前者应该在不关闭嵌套的
End IfElse If
的情况下引发错误,如果将嵌套的If
放入第一个If
语句的Else
分支中,而ElseIf
是初始If
语句的一部分
基本上是两个双向条件(一个嵌套在另一个中)
vs单向条件
If condition Then
...
ElseIf condition Then
...
Else
...
End If
并且,正如所指出的,如果示例代码没有编译并产生编译错误,则前者应该在没有结束嵌套的结束的情况下引发错误
Microsoft VBScript编译错误:应为“结束”
如我所料
我从来都不知道别人会以其他方式工作。我能想到的唯一一件事就是你把它写成一个嵌套的If
语句
如果a=b,则
...
否则,如果a=c,则
...
如果结束
如果结束
看起来很难看,但和写作一样
如果a=b,则
...
其他的
如果a=c,则
...
如果结束
如果结束
这种方法的问题是,在嵌套的If
语句中,最终会出现一个未处理的条件。例如,如果a=d
会发生什么情况
如果捕获了ElseIf
语句不需要的额外条件,则需要确保嵌套的
如果a=b,则
...
其他的
如果a=c,则
...
其他的
...
如果结束
如果结束
ElseIf
如果a=b,则
...
如果a=c,那么
...
其他的
...
如果结束
(VBScript编译器背后的一位程序员)在评论的海洋中…非常值得一读。我当然学到了一些东西。示例代码没有编译并产生编译错误
Microsoft VBScript编译错误:应为“结束”
如我所料
我从来都不知道别人会以其他方式工作。我能想到的唯一一件事就是你把它写成一个嵌套的If
语句
如果a=b,则
...
否则,如果a=c,则
...
如果结束
如果结束
看起来很难看,但和写作一样
如果a=b,则
...
其他的
如果a=c,则
...
如果结束
如果结束
这种方法的问题是,在嵌套的If
语句中,最终会出现一个未处理的条件。例如,如果a=d
会发生什么情况
如果捕获了ElseIf
语句不需要的额外条件,则需要确保嵌套的
如果a=b,则
...
其他的
如果a=c,则
...
其他的
...
如果结束
如果结束
ElseIf
如果a=b,则
...
如果a=c,那么
...
其他的
...
如果结束
(VBScript编译器背后的一位程序员)在评论的海洋中…非常值得一读。我确实学到了一些东西。您发布的代码无法编译。所以我想知道你这么多年来做了什么。我也被这个问题弄糊涂了;你能提供一个实际编译和运行的代码片段来演示你的问题吗?在此之前,有一个有趣的转移:预测这一行If
语句是否应该编译,假设存在sub
sFoo
和Bar
以及布尔表达式X
:如果X,那么Foo Else Bar
。有没有VBScript专家愿意试一试?@Lankymart:对!单行If
解析器中有一个我从未修复过的错误。它试图将Foo-Else
解析为语句,但失败了,而没有检测到Else
在单个标记Foo
之后结束语句。除了没有被认为是一个高度优先的问题之外,没有什么好的理由可以解释为什么它从未被修复。@EricLippert:哇!很高兴得到这个人的支持o) 您发布的代码未编译。所以我想知道你这么多年来做了什么。我也被这个问题弄糊涂了;你能提供一个实际编译和运行的代码片段来演示你的问题吗?在此之前,有一个有趣的转移:预测这一行If
语句是否应该编译,假设存在sub
sFoo
和Bar
以及布尔表达式X
:如果X,那么Foo Else Bar
。有没有VBScript专家愿意试一试?@Lankymart:对!单行If
解析器中有一个我从未修复过的错误。它试图将Foo-Else
解析为语句,但失败了,而没有检测到Else
在单个标记Foo
之后结束语句。除了没有被认为是一个高度优先的问题之外,没有什么好的理由可以解释为什么它从未被修复。@EricLippert:哇!很高兴得到这个人的支持o)
If condition Then
...
ElseIf condition Then
...
Else
...
End If