JScript explained

JScript
File Ext:[[.js]], .jse, [[.wsf]], .wsc ([[.htm]], [[.html]], [[HTML Application|.hta]], [[Active Server Pages|.asp]])[1]
Developer:Microsoft
Latest Release Version:9.0
Latest Release Date:March 2011
Typing:Dynamic, weak, duck
Implementations:Active Scripting, JScript .NET
Operating System:Microsoft Windows

JScript is Microsoft's legacy[2] dialect of the ECMAScript standard[3] that is used in Microsoft's Internet Explorer web browser.

JScript is implemented as an Active Scripting engine. This means that it can be "plugged in" to OLE Automation applications that support Active Scripting, such as Internet Explorer, Active Server Pages, and Windows Script Host.[4] It also means such applications can use multiple Active Scripting languages, e.g., JScript, VBScript or PerlScript.

JScript was first supported in the Internet Explorer 3.0 browser released in August 1996. Its most recent version is JScript 9.0, included in Internet Explorer 9.

JScript 10.0[5] is a separate dialect, also known as JScript .NET, which adds several new features from the abandoned fourth edition of the ECMAScript standard. It must be compiled for .NET Framework version 2 or version 4, but static type annotations are optional.

JScript has been criticized for being insecure and having multiple security bugs "exploited by nation-state actors",[6] leading Microsoft to add an option to disable it.[7]

Comparison to JavaScript

As explained by Douglas Crockford in his talk titled The JavaScript Programming Language on YUI Theater,

However, JScript supports conditional compilation, which allows a programmer to selectively execute code within block comments. This is an extension to the ECMAScript standard that is not supported in other JavaScript implementations, thus making the above statement not completely true, although conditional compilation is no longer supported in Internet Explorer 11 Standards mode.

Other internal implementation differences between JavaScript and JScript, at some point in time, are noted on the Microsoft Developer Network (MSDN).[8] The default type value for the script element in Internet Explorer is JavaScript, while JScript was its alias.[9] In an apparent transition from JScript to JavaScript, online, the Microsoft Edge Developer Guide refers to the Mozilla MDN web reference library as its definitive documentation.[10] As of October 2017, Microsoft MSDN pages for scripting in Internet Explorer are being redirected there as well.[11] This information may not include JScript specific objects, such as Enumerator, which are listed in the JavaScript language reference on Microsoft Docs.[12] Those provide additional features that are not included in the ECMA Standards, whether they are supported in the Edge browser or its predecessor.[13]

Versions

JScript (COM Classic)

The original JScript is an Active Scripting engine. Like other Active Scripting languages, it is built on the COM/OLE Automation platform and provides scripting capabilities to host applications.

This is the version used when hosting JScript inside a Web page displayed by Internet Explorer, in an HTML application before IE9, as well as in classic ASP, Windows Script Host scripts and other Automation environments.

JScript is sometimes referred to as "classic JScript" or "Active Scripting JScript" to differentiate it from newer .NET-based versions.

Some versions of JScript are available for multiple versions of Internet Explorer and Windows. For example, JScript 5.7 was introduced with Internet Explorer 7.0 and is also installed for Internet Explorer 6.0 with Windows XP Service Pack 3, while JScript 5.8 was introduced with Internet Explorer 8.0 and is also installed with Internet Explorer 6.0 on Windows Mobile 6.5.

Microsoft's implementation of ECMAScript 5th Edition in Windows 8 Consumer Preview is called JavaScript and the corresponding Visual Studio 11 Express Beta includes a "completely new", full-featured JavaScript editor with IntelliSense enhancements for HTML5 and ECMAScript 5 syntax, "VSDOC" annotations for multiple overloads, simplified DOM configuration, brace matching, collapsible outlining and "go to definition".[14]

VersionDateIntroduced withBased onSimilar JavaScript version
1.0Aug 1996Internet Explorer 3.0Netscape JavaScript1.0
2.0Jan 1997Windows IIS 3.0Netscape JavaScript1.1
3.0Oct 1997Internet Explorer 4.0ECMA-262 1st edition1.3
4.0Visual Studio 6.0 (as part of Visual InterDev)ECMA-262 1st edition1.3
5.0Mar 1999Internet Explorer 5.0ECMA-262 2nd edition1.4
5.1Internet Explorer 5.01ECMA-262 2nd edition1.4
5.5Jul 2000Internet Explorer 5.5 & Windows CE 4.2ECMA-262 3rd edition1.5
5.6Oct 2001Internet Explorer 6.0 & Windows CE 5.0ECMA-262 3rd edition1.5
5.7Nov 2006Internet Explorer 7.0ECMA-262 3rd edition[15] + ECMA-327 (ES-CP)1.5
5.8Mar 2009Internet Explorer 8.0 & Internet Explorer Mobile 6.0ECMA-262 3rd edition + ECMA-327 (ES-CP) + JSON (RFC 4627)1.5

JScript is also available on Windows CE (included in Windows Mobile, optional in Windows Embedded CE). The Windows CE version lacks Active Debugging.

Managed JScript

Managed JScript is an implementation of JScript for the Dynamic Language Runtime, it is part of Microsoft's dynamic languages for .NET along with IronRuby, IronPython, and Dynamic Visual Basic.Unlike JScript .NET, which is less dynamic than the original JScript but provides CLS compatibility, Managed JScript is designed on top of the DLR and provides the features needed for scripting scenarios.

While it is primarily designed to be used within Silverlight and ASP.NET at this time, it can also easily be embedded within any .NET application.

(Source: JScript Blog, Jim Hugunin's Thinking Dynamic blog,Source: Blog of Jitu)

Two builds of Managed JScript exist: one for the Desktop CLR and one for the Silverlight CoreCLR

VersionDateIntroduced withBased onPlatform
1.0.0.0 2007 ASP.NET Futures (July 2007 preview) ECMA-262 3rd edition Desktop CLR 2.0
1.1.20625.0 2007 Microsoft Silverlight 1.1 Alpha (Sep 2007 refresh) ECMA-262 3rd edition CoreCLR 1.1

Managed JScript is not supported in the .NET Compact Framework.

(Source: files versions of Microsoft.JScript.Runtime.dll in ASP.NET Futures and Silverlight 1.1 folders)

JScript "Chakra" (JsRT)

See also: Chakra (JScript engine). JScript "Chakra" is based on the JScript (COM classic) version, but it has been redesigned to improve performance in Internet Explorer 9[16] at the expense of proper Active Scripting engine compatibility. It requires a specific Microsoft JavaScript Hosting (JsRT) API for proper use. Therefore, it is installed side by side with JScript 5.x and is only used by Internet Explorer 9 and later as well as JsRT hosts, while other Active Scripting hosts keep using the 5.x version when requesting the JScript engine.

VersionDateIntroduced withBased on[17] Similar JavaScript version
Chakra 9.0Mar 2011Internet Explorer 9.0ECMA-262 5th edition1.8.1
Chakra 10.0Sep 2012Internet Explorer 10.0ECMA-262 5.1 edition
Chakra 11.0Oct 2013Internet Explorer 11.0ECMA-262 6th edition
Chakra EdgeJul 2015Edge / Windows 10ECMA-262 5.1 to 9 (2018) edition(kept up to date without engine versioning)

There are two versions of the Chakra engine, the original one used by Internet Explorer 9 and later, and sometimes referred to as "jscript9.dll" or "legacy Chakra engine", and a second one used by Microsoft Edge browser and sometimes referred to as "new Chakra engine", "Edge engine" or "Chakra.dll".Both Chakra versions can be used by other applications using the JsRT API and can be installed side by side.[18]

See separate page about new Chakra (Edge) engine.

JScript .NET (CLI)

See main article: JScript .NET. JScript .NET is a Microsoft .NET implementation of JScript. It is a CLI language and thus inherits very powerful features, but lacks many features of the original JScript language, making it inappropriate for many scripting scenarios.JScript .NET can be used for ASP.NET pages and for complete .NET applications, but the lack of support for this language in Microsoft Visual Studio places it more as an upgrade path for classic ASP using classic JScript than as a new first-class language.

VersionPlatformDateIntroduced withBased on
7.0 Desktop CLR 1.0 2002-01-05 Microsoft .NET Framework 1.0 ECMA-262 3rd edition
7.1 Desktop CLR 1.1 2003-04-01 Microsoft .NET Framework 1.1 ECMA-262 3rd edition
8.0 Desktop CLR 2.0 2005-11-07 Microsoft .NET Framework 2.0 ECMA-262 3rd edition
10.0 Desktop CLR 4.0 2010-08-03 Microsoft .NET Framework 4.0 ECMA-262 3rd edition

JScript .NET is not supported in the .NET Compact Framework.

Note: JScript .NET versions are not related to classic JScript versions. JScript .NET is a separate product. Even though JScript .NET is not supported within the Visual Studio IDE, its versions are in sync with other .NET languages versions (C#, VB.NET, VC++) that follow their corresponding Visual Studio versions.

.NET Framework 3.0 and 3.5 are built on top of 2.0 and do not include the newer JScript.NET release (version 10.0 for .NET Framework 4.0).

(Source: file version of jsc.exe JScript.NET compiler and Microsoft.JScript.dll installed with .NET Framework)

See also

External links

Notes and References

  1. Web site: Types of Script Files . 24 October 2011 . Msdn.microsoft.com . 2012-08-17.
  2. Web site: 2020-10-13. Disabling legacy scripting engine JScript in Internet Explorer. 2021-11-15. TECHCOMMUNITY.MICROSOFT.COM. en.
  3. Web site: JScript (ECMAScript3) . 24 October 2011 . Msdn.microsoft.com . 2012-08-17.
  4. Web site: What Is WSH? . 24 October 2011 . Msdn.microsoft.com . 2012-08-17.
  5. https://msdn.microsoft.com/en-us/library/xkx7dfw1.aspx What is JScript 10.0?
  6. Web site: Cimpanu. Catalin. Microsoft adds option to disable JScript in Internet Explorer. 2021-11-15. ZDNet. en.
  7. Web site: Option to disable JScript execution in Internet Explorer. 2021-11-15. support.microsoft.com.
  8. Web site: The World of JScript, JavaScript, ECMAScript . 15 August 2007 . Blogs.msdn.microsoft.com . 2017-10-21.
  9. Web site: script element . Msdn.microsoft.com . 2017-10-16.
  10. Web site: Microsoft-Edge Dev-Guide . Docs.microsoft.com . 2017-10-18.
  11. Web site: Documenting the Web Together . 18 October 2017 . Blogs.windows.com . 2017-10-18.
  12. Web site: Javascript Language Reference (Microsoft Docs) . Docs.microsoft.com . 2017-10-18.
  13. Web site: JavaScript Objects (Microsoft Docs) . Docs.microsoft.com . 2017-10-18.
  14. Web site: What's New in ASP.NET 4.5 and Visual Web Developer 11 Beta: The Official Microsoft ASP.NET Site . 13 May 2022 .
    Web site: What's New for ASP.NET 4.5 and Web Development in Visual Studio 11 Beta . 12 May 2015 .
  15. Web site: Lakshman . Pratap . JScript Deviations from ES3 . The Register . Situation Publishing / Microsoft . 9 February 2020.
  16. Web site: Niyogi . Shanku . The New JavaScript Engine in Internet Explorer 9 . IEBlog (archives) . 18 March 2010 . Microsoft . 19 February 2020.
  17. Web site: Internet Explorer Standards Support Documents . Open Specifications (Microsoft Docs) . Microsoft . 19 February 2020 . en-us.
  18. Web site: Targeting Microsoft Edge vs. Legacy Engines in JsRT APIs . Microsoft Edge documentation (Microsoft Docs) . Microsoft . 19 February 2020 . en-us.