主要是遇到类似的语句的时候感觉到 VBScript 不支持捷径运算的(因为脚本是顺序执行的,逻辑上不需要去执行的代码就不会执行了): 代码: If UBound(arrTitles) >= i And arrTitles(i) = strTitle_0 Then 出现的错误是 i 越界。 本来是想通过前面一部分限定 i 必须在允许的范围内,只要前面部分不成立,按照捷径运算的规则,后面部分是不需要判断的,从而绕开 i 越界这个错误的产生。 但是在 JavaScript 中,这个却不会出现错误。 代码: <script language="javascript" type="text/javascript"> <!-- var a = new Array(2); a[0] = 0; a[1] = 1; a[2] = 2; if (1 == 2 && a[5] == 5) { alert("Yes"); } else { alert("No"); } --> </script>
相互对比的代码: HTML: <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>捷径运算 测试</title> <script language="javascript" type="text/javascript"> <!-- var a = new Array(2); a[0] = 0; a[1] = 1; a[2] = 2; if (1 == 2 && a[5] == 5) { alert("Yes"); } else { alert("No"); } --> </script> </head> <body> <% Dim a(2) a(0) = 0 a(1) = 1 a(2) = 2 If 1 = 2 And a(5) = 5 Then Response.Write("Yes") Else Response.Write("No") End If %> </body> </html>
在上面的例子中,如果去掉 JavaScript 代码中的 1 == 2 ,依然会的到 No 这个结果,不过会得到“引用未定义参数a[5]”的警告,注意是警告,而不是错误。通常出现警告,程序还是会执行,只是结果可能不是意料之中的。 如果不去掉 1 == 2,就不会有任何警告或者错误了。