由于 VBScript(经典 ASP)中的 IF 语句中的隐式转换在处理变量或文字时不会以相同的方式进行隐式转换,我们目前遇到了问题。有人可以向我解释这种行为吗,为什么 VBScript 会这样?
这是我的意思的示例:
Const c_test = 3
Dim iId : iId = 3
Dim iTestStr : iTestStr = "3"
If iId = iTestStr Then
Response.Write("Long variable = String variable : Equal")
Else
Response.Write("Long variable = String variable : Not Equal")
End If
Response.Write("<br/>")
If c_test = iTestStr Then
Response.Write("Long constant = String variable : Equal")
Else
Response.Write("Long constant = String variable : Not Equal")
End If
Response.Write("<br/>")
If c_test = iId Then
Response.Write("Long constant = Long variable : Equal")
Else
Response.Write("Long constant = Long variable : Not Equal")
End If
Response.Write("<br/>")
If iId = "3" Then
Response.Write("Long variable = String literal : Equal")
Else
Response.Write("Long variable = String literal : Not Equal")
End If
Response.Write("<br/>")
If c_test = "3" Then
Response.Write("Long constant = String literal : Equal")
Else
Response.Write("Long constant = String literal : Not Equal")
End If
输出:
长变量 = 字符串变量:不等于
长常量 = 字符串变量:不等于
长常量 = 长变量:等于
长变量 = 字符串文字:等于
长常量 = 字符串文字:等于
这很令人困惑o_O