|
导读使用VBScript和JScript编写WEB应用程序(三)3、区分大小写以及命名习惯 JScript是严格区别大小写的:在每个JScript的关键字,每个JScript命名空间的所有部分中,你可以... 使用VBScript和JScript编写WEB应用程序(三)3、区分大小写以及命名习惯 JScript是严格区别大小写的:在每个JScript的关键字,每个JScript命名空间的所有部分中, 你可以把大写和小写字母恰当的结合起来使用。这其中包括了你使用的对象模型中所有的关键 字。例如,当你使用ASP Response对象时,必须正确地使用大小写字母(如Response.Write), 否则JScript会坚决不予承认。同样,如果你为DHTML onclick事件编写一个处理程序,如果用 在Visual Basic中经常发生的随便使用大小写的形式JScript可能就不会承认。 VBScript是不区分大写和小写字母的。在某种程度上,这种不计较大小写的疏忽甚至在你用 VBScript对JScript编写的单元进行访问时都没什么问题。下面例子中给出了两个脚本。第一 个是用JScript编写的,其中还包括了一个全局变量(ctr)和一个函数(doubleMe)。第二个 脚本是用VBScript编写的,它是一个按钮处理程序,它能够调用JScript函数,并且报告全局 变量的值。 <SCRIPT LANGUAGE=javascript> var ctr; function doubleMe(aNumber){ if(parseInt(ctr)){ ctr = ctr + 1; } else{ ctr = 1; } return aNumber * 2; } </SCRIPT> <SCRIPT LANGUAGE="vbscript"> Function btn1_onclick() numberToDouble = 12 msgbox "The doubled number = " & DOUBLEME(numberToDouble) msgbox "You have doubled the number " & CTR & " times." End function </SCRIPT> 在VBScript脚本中,很明显,我在提到doubleMe 函数和ctr变量时,没有正确使用字母的大小 写,但是程序依然运行良好。 这是一个好消息。而坏消息就是,在下面这些情况下你一定要注 意字母的大小写:如果网页中的JavaScript脚本所包含的单元只能够通过字母的大写和小写来 区分,例如,一个叫做Timer()的函数和一个叫做timer的全局变量等等。很不幸,尽管这种编 码方式不怎么好,但是有时候在你的网页中还是可能会遇到原来就存在的编码。 在一个函数调用中把JScript单元的名字作为一个字符串参数来使用 如果JScript包括的单元仅仅能够用字母的大小写来区分,那么VBScript就会把它们看成一样的 (也就是说,不区分大写和小写)。VBScript只能看看不管大小写的区别,它们是不是一样, 因此它识别出的只有一个JScript单元。换一句话说,如果VBScript首先找到的是叫做Timer() 的函数,那么它就无法找到叫做timer的全局变量了,反之也是一样。即便你在VBScript编码中 十分注意的把它们做了区别结果也是一样。因为VBScript在处理这些名字的时候认为它们只有一 种写法。不幸的是,这里没有其它的解决方法,除非在JScript的代码中不利用这些大小写之间 的微小差别来区分不同的函数名称。 除了在某些特殊的情况下,把单元名作为参数使用这种问题并不常见。特殊情况之一是在Visual InterDev 6.0中的脚本对象模型中。下面我会把它作为一个例子来使用,你可以把它看作是相同 情况下的处理准则。 Visual InterDev 6.0的脚本对象模型都是用JScript来编写的。你也可以用VBScript来编写自己 的编码,它能够与用VBScript区分大小写方式编写的脚本对象模型一起使用。有时候,你不能够 直接调用某一方法,除非你把这个方法的名称传递到一个JScript函数中,而由函数来调用这个 方法。 一个典型的例子就是警告方法,你可以用它把一个方法绑定到一个特殊的事件上。在下面这个例 子中,一个按钮的onmouseover事件被绑定到changecaption()事件处理程序上。 <SCRIPT LANGUAGE="VBScript"> Function setAdviseMethods() Btn1.advise("onmouseover", "changecaption()") End Function </SCRIPT> 因为你把这些名字作为字符串传送到一个JScript函数中,所以你必须使用正确的大小写表示。 JScript会自动用它的区分大小写的规则来检查这些名字,如果大小写不正确,就会找不到它们。 4、从VBScript 往JScript中传送数组 有时候一个VBScript程序会传送一个数组作为它的一个参数,或者作为它的返回值。你可以从JScript 中调用这个程序,不过必须把VBScript数组转换成为一个可用的JScript数组。你只要在JScript函数中 建立一个VBArray对象并且用toArray把它转换成为一个JScript数组就可以了。 注意:JScript不支持多维数组,如果原来的VBScript数组是多维的,经过toArray的转换后它会成为一 个一维的JScript数组。 在下面的例子中有一个VBScript脚本,它建立了一个数组,还有一个JScript 脚本,它将说明如何才能获得并使用这个数组: <SCRIPT LANGUAGE="VBSCRIPT"> Function makeArrayVB() ' 建立一个 VBScript 数组 dim anArray(1,1) anArray(0,0) = "0,0" anArray(0,1) = "0,1" anArray(1,0) = "1,0" anArray(1,1) = "1,1" makeArrayVB = anArray End Function <SCRIPT LANGUAGE="JavaScript"> // 在 JScript 脚本中访问 VBScript 数组 function getVBArray(){ var arrayObj; var jsArray; arrayObj = makeArrayVB(); jsArray = VBArray(arrayObj).toArray(); alert("VBScript array length = " + jsArray.length); // 显示数组的内容 for(i=1;i<=jsArray.length;i++){ alert(jsArray[i-1]); } } </SCRIPT> 不过,在目前的VBScript(4.0)中,反过来是无法做到的。也就是说你不能把一个 JavaScript 数组转换成 为VBScript数组。如果你非要在VBScript程序中使用JavaScript数组,你可以用下面的做法: 把JScript 数组转换成一种不同的结构,如转换成一个由分隔符限制的字符串等,这样VBScript 就能够使 用了。例如,你可以用 toString 函数把一个数组转换成一个用逗号分隔的,无限制的字符串。这样,在 VBScript 中你就能够用 Split 函数把它分成不同的单元。很明显这种方法在很多时候并不管用,不过有时 又的确有效。 以上罗里罗唆的写了一大堆,希望能对网友们有帮助,也希望就某些问题展开讨论。 最后,祝网友们 Happy Scripting!! 我心飞扬敬上 |
温馨提示:喜欢本站的话,请收藏一下本站!