Is JScript a 'first class' equal peer to VBscript in NON-dotNet ASP?

I need to write a few new scripts for an ancient app running in a pre-.NET ASP environment. To tell the truth, I hate VBscript and Visual Basic syntax in general with a passion. JScript isn't much better, but at least it uses halfway civilized syntax (I happen to like punctuation better than verbosity. Ok, and I keep forgetting the )@$*( 'Then' after 'If' statements... grrr....).

Anyway, is JScript TRULY an equal peer to VBscript insofar as pre-.NET ASP is concerned?  Are all the objects available to VBscript (Server, Response, etc.) available to JScript? Are there any innate capabilities of VBscript relevant to ASP that simply aren't available (or are massively kludged) in JScript?

I'm assuming the answer is a resounding 'no', but can you mix languages in a single page (using multiple <script language="xxx" runat="server" blocks specifying different languages in different places)? And if you can, do they share a common object space? For instance, can you Dim a String variant in a block of VBscript and assign it a value near the top of the page, then do something with that variable in a block of JScript further down the page? How about complex objects? Say, an object defined using VBscript syntax, possibly created within a VBscript block, then called by a JScript block further down the page?

Is there any good online reference to using JScript in the context of pre-.NET ASP? I've been searching for over an hour, but everything I keep finding is either

* an article about using VBscript that just happens to contain the word "JScript" somewhere

* an article about client-side JScript within IE

* An article about something .NET related that, like the mountain of VBscript articles, just happens to mention JScript in passing.
jskubickAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

sybeCommented:
I agree that JScript is a nicer language to work with then VBScript. In fact in older ASP versions, JScript had more possibilites then VBScript (although there probably also were some things in VBScript that weren't possible in JScript).

In my opinion you can use Jscript just as well as VBScript in ASP.
It it also nice to mix languages if needed. You can even use perlscript, if you install it.
Mixing languages is no problem, they all will be have access to public variables.

There one thing that is really different in VBScript and JScript: arrays. A VBScript and a JScript array are completely different things. Now that I talk about arrays: VBScript has truly multi-dimensional arrays, while JScript hasn't.

The thing is that most ASP pages are written in VBScript, and if you want advice, then it's easier to get in in VBScript. I believe however that most ASP programmers als have quite a knowledge of client-side javascript (look at the expert-rankings here on EE, you'll see that most high ranked ASP maybe are not top-javascript experts, but have a considerable amount of point in the javascript area).

If you hate to program in VBScript, there's really nothing against using JScript from the point of possibilites.


jskubickAuthor Commented:
Is there a JScript equivalent to
<% Option Explicit %> ?

How about sharing variables? I assume a variable assigned a value of null by vbscript will have a value of null when checked by JScript, but does vbscript's 'empty' map directly to jscript's 'undefined'? Aside from not trying to share arrays, are there any other not-necessarily-obvious things that will cause JScript to crash and burn, even though the same thing theoretically works from vbscript? Situations where one language expects something to pass by value where the other expects it to pass by reference, perhaps?
sybeCommented:
I don't know the answers to your question. the only way would to try it probably.

VBScript functions and Subs pass variables by default ByRef. To tell the truth I don't know about JScript.
VBScript function can have ByValue or ByRef before the parameter. I don't think JScript can.

<%
Function Demo(ByVal intIn)
    Demo = intIn + 1
End Function

Function Demo2(ByRef intIn)
    Demo2 = intIn + 1
End Function
%>

Somehow I sense that you are afraid to use JScript in ASP. I don't think that there is any reason for that. If you mix script-languages, then mind the arrays. Although JScript even has a VBARRAY:

varName = new VBArray(safeArray)
Arguments
varName
Required. The variable name to which the VBArray is assigned.
safeArray
Required. A VBArray value.

Example
The following example consists of three parts. The first part is VBScript code to create a Visual Basic safe array. The second part is JScript code that converts the VB safe array to a JScript array. Both of these parts go into the <HEAD> section of an HTML page. The third part is the JScript code that goes in the <BODY> section to run the other two parts.

<HEAD>
<SCRIPT LANGUAGE="VBScript">
<!--
Function CreateVBArray()
   Dim i, j, k
   Dim a(2, 2)
   k = 1
   For i = 0 To 2
      For j = 0 To 2
         a(j, i) = k
         document.writeln(k)
         k = k + 1
      Next
      document.writeln("vbCRLF")
   Next
   CreateVBArray = a
End Function
-->
</SCRIPT>

<SCRIPT LANGUAGE="JScript">
<!--
function VBArrayTest(vbarray){
   var a = new VBArray(vbarray);
   var b = a.toArray();
   var i;
   for (i = 0; i < 9; i++)
   {
      document.writeln(b[i]);
   }
}
-->
</SCRIPT>
</HEAD>

<BODY>
<SCRIPT LANGUAGE="JScript">
<!--
   VBArrayTest(CreateVBArray());
-->
</SCRIPT>
</BODY>


Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Why Diversity in Tech Matters

Kesha Williams, certified professional and software developer, explores the imbalance of diversity in the world of technology -- especially when it comes to hiring women. She showcases ways she's making a difference through the Colors of STEM program.

sybeCommented:
A very big advantage of JScript is the ability to create enumerated script classes. In VBScript you can't do that.
sybeCommented:
Jscript can measure milliseconds, VBScript has a minimal time-unit 1000/256 second.
sybeCommented:
JScript has optional parameters to functions, VBScript hasn't
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
ASP

From novice to tech pro — start learning today.