If statement VBScript检查所有或所有条件?

If statement VBScript检查所有或所有条件?,if-statement,vbscript,If Statement,Vbscript,也许我遗漏了什么,但VBScript似乎读取了所有或条件,这让我很恼火。例如,我想这样做: If (oFS.FileExists(sFileLoc) = False) Or (sNewText <> oFS.OpenTextFile(sFileLoc).ReadAll) Then If oFS.FileExists(sFileLoc) Then If sNewText = oFS.OpenTextFile(sFileLoc).ReadAll Then 如果(oFS.FileExi

也许我遗漏了什么,但VBScript似乎读取了所有或条件,这让我很恼火。例如,我想这样做:

If (oFS.FileExists(sFileLoc) = False) Or (sNewText <> oFS.OpenTextFile(sFileLoc).ReadAll) Then
If oFS.FileExists(sFileLoc) Then If sNewText = oFS.OpenTextFile(sFileLoc).ReadAll Then
如果(oFS.FileExists(sFileLoc)=False)或(sNewText oFS.OpenTextFile(sFileLoc.ReadAll),则
现在我得到一个错误,由于第二个条件,文件不存在。我希望如果文件不存在,VBScript会立即跳到结果,如果存在,它会检查第二个条件

我说得对吗?这是正常行为吗?

由于逻辑运算符(例如)的文档明确说明,VBScript不会缩短条件的求值。您必须使用或稍微花哨的

您可以使用内嵌嵌套的(如果)在VBScript中实现短路。例如,您可以这样重写您的语句:

If (oFS.FileExists(sFileLoc) = False) Or (sNewText <> oFS.OpenTextFile(sFileLoc).ReadAll) Then
If oFS.FileExists(sFileLoc) Then If sNewText = oFS.OpenTextFile(sFileLoc).ReadAll Then
但是您的
Then
条件必须与此语句在同一行中指定。因此,如果由于这种情况需要执行多个操作,则必须使用冒号(
)分隔语句,冒号是VBScript中的单行语句分隔符

If oFS.FileExists(sFileLoc) Then If sNewText = oFS.OpenTextFile(sFileLoc).ReadAll Then x = 1 : y = 2
您也可以将逻辑移到
子函数
函数
中,然后进行调用:

If oFS.FileExists(sFileLoc) Then If sNewText = oFS.OpenTextFile(sFileLoc).ReadAll Then DoStuff
还要注意的是,如果需要指定
Else
子句,也必须在此行中指定它

If oFS.FileExists(sFileLoc) Then If sNewText = oFS.OpenTextFile(sFileLoc).ReadAll Then x = 1 Else x = 2

啊,谢谢!我找不到答案,但现在我知道这叫做短路。将嵌套的if放入一行需要多远?如果是的话,结局在哪里?什么是IF?@TheBlastOne Lol.
End IF
未在单行
IF
构造中使用。仅使用
如果
然后
,以及可选的
否则
。但是您仍然可以嵌套多个
If
s,如上所示。