JScript — это устаревший [2] диалект стандарта ECMAScript [ 3] компании Microsoft , который используется в веб-браузере Internet Explorer и HTML-приложениях компании Microsoft , а также в качестве отдельного языка сценариев Windows.
JScript реализован как механизм Active Scripting . Это означает, что его можно «подключить» к приложениям OLE Automation , которые поддерживают Active Scripting, таким как Internet Explorer , Active Server Pages и Windows Script Host . [4] Это также означает, что такие приложения могут использовать несколько языков Active Scripting, например JScript, VBScript или PerlScript .
Впервые поддержка JScript появилась в браузере Internet Explorer 3.0, выпущенном в августе 1996 года. Его последняя версия — JScript 9.0, включенная в Internet Explorer 9.
JScript 10.0 [5] — это отдельный диалект, также известный как JScript .NET , который добавляет несколько новых функций из заброшенного четвертого издания стандарта ECMAScript. Он должен быть скомпилирован для .NET Framework версии 2 или 4, но статические аннотации типов необязательны.
JScript подвергся критике за небезопасность и наличие множества ошибок безопасности, «используемых государственными субъектами» [6] , что заставило Microsoft добавить опцию для его отключения. [7]
Как объяснил Дуглас Крокфорд в своем докладе под названием «Язык программирования JavaScript в YUI Theater»,
[Microsoft] не захотела иметь дело с Sun Microsystems по вопросу торговой марки, поэтому они назвали свою реализацию JScript. Многие думают, что JScript и JavaScript — это разные, но похожие языки. Это не так. Это просто разные названия одного и того же языка, и причина, по которой названия различаются, — это обойти проблемы торговой марки. [8]
Однако JScript поддерживает условную компиляцию , которая позволяет программисту выборочно выполнять код внутри блочных комментариев . Это расширение стандарта ECMAScript , которое не поддерживается в других реализациях JavaScript, что делает приведенное выше утверждение не совсем верным, хотя условная компиляция больше не поддерживается в режиме стандартов Internet Explorer 11.
Другие внутренние различия в реализации между JavaScript и JScript в какой-то момент времени были отмечены в Microsoft Developer Network (MSDN). [9] Значение типа по умолчанию для элемента script в Internet Explorer — JavaScript, в то время как JScript был его псевдонимом. [10] При очевидном переходе от JScript к JavaScript, в Интернете, Microsoft Edge Developer Guide ссылается на веб-библиотеку справочной информации Mozilla MDN как на свою окончательную документацию. [11] По состоянию на октябрь 2017 года страницы Microsoft MSDN для сценариев в Internet Explorer также перенаправляются туда. [12] Эта информация может не включать специфические объекты JScript, такие как Enumerator, которые перечислены в справочнике по языку JavaScript в Microsoft Docs. [13] Они предоставляют дополнительные функции, которые не включены в стандарты ECMA, независимо от того, поддерживаются ли они в браузере Edge или его предшественнике. [14]
Оригинальный JScript — это движок Active Scripting . Как и другие языки Active Scripting, он построен на платформе COM/OLE Automation и предоставляет возможности скриптинга для размещения приложений.
Эта версия используется при размещении JScript внутри веб-страницы, отображаемой Internet Explorer , в HTML-приложении до IE9 , а также в классических сценариях ASP , Windows Script Host и других средах автоматизации .
JScript иногда называют «классическим JScript» или «JScript с активными сценариями», чтобы отличать его от более новых версий на основе .NET.
Некоторые версии JScript доступны для нескольких версий Internet Explorer и Windows. Например, JScript 5.7 был представлен в Internet Explorer 7.0 и также устанавливается для Internet Explorer 6.0 с Windows XP Service Pack 3 , в то время как JScript 5.8 был представлен в Internet Explorer 8.0 и также устанавливается с Internet Explorer 6.0 на Windows Mobile 6.5 .
Реализация ECMAScript 5th Edition от Microsoft в Windows 8 Consumer Preview называется JavaScript , а соответствующая Visual Studio 11 Express Beta включает в себя «совершенно новый», полнофункциональный редактор JavaScript с улучшениями IntelliSense для синтаксиса HTML5 и ECMAScript 5 , аннотации «VSDOC» для множественных перегрузок, упрощенную конфигурацию DOM , сопоставление фигурных скобок, сворачиваемое структурирование и «переход к определению». [15]
JScript также доступен в Windows CE (включен в Windows Mobile, опционален в Windows Embedded CE). В версии для Windows CE отсутствует Active Debugging.
Managed JScript — это реализация JScript для Dynamic Language Runtime , часть динамических языков Microsoft для .NET вместе с IronRuby , IronPython и Dynamic Visual Basic . В отличие от JScript .NET, который менее динамичен, чем исходный JScript, но обеспечивает совместимость с CLS , Managed JScript разработан поверх DLR и предоставляет функции, необходимые для сценариев сценариев.
Хотя в настоящее время он в первую очередь предназначен для использования в Silverlight и ASP.NET, его также можно легко встроить в любое приложение .NET. [21]
Существуют две сборки Managed JScript: одна для Desktop CLR и одна для Silverlight CoreCLR.
Управляемый JScript не поддерживается в .NET Compact Framework .
(Источник: версии файлов Microsoft.JScript.Runtime.dll в папках ASP.NET Futures и Silverlight 1.1)
JScript "Chakra" основан на версии JScript (COM classic), но он был переработан для улучшения производительности в Internet Explorer 9 [22] за счет надлежащей совместимости с движком Active Scripting. Для его надлежащего использования требуется определенный API Microsoft JavaScript Hosting (JsRT). Поэтому он устанавливается бок о бок с JScript 5.x и используется только Internet Explorer 9 и более поздними версиями, а также хостами JsRT, в то время как другие хосты Active Scripting продолжают использовать версию 5.x при запросе движка JScript.
Существует две версии движка Chakra JsRT. Первоначальная версия использовалась Internet Explorer 9 и более поздними версиями и иногда упоминается как "jscript9.dll" или "устаревший движок Chakra", а вторая версия использовалась браузером Microsoft Edge Legacy и иногда упоминается как "новый движок Chakra", "движок Edge" или "Chakra.dll". Обе версии Chakra JsRT могут использоваться другими приложениями, использующими API JsRT, и могут быть установлены бок о бок. [25]
Существует также версия COM Classic Chakra, внутренне называемая "JScript 9 Legacy" (предоставляемая jscript9Legacy.dll), представленная в Windows 11 24H2, которая возвращает совместимость с хостами Active Scripting и предназначена как совместимая замена JScript 5.8. Хотя она в значительной степени совместима с оригинальным JScript 5.8, есть заметные критические различия. [26]
См. отдельную страницу о новом движке Chakra (Edge) .
JScript .NET — это реализация JScript в Microsoft .NET . Это язык CLI , поэтому он наследует очень мощные возможности, но не имеет многих возможностей исходного языка JScript, что делает его неподходящим для многих сценариев сценариев. JScript .NET можно использовать для страниц ASP.NET и для полных приложений .NET, но отсутствие поддержки этого языка в Microsoft Visual Studio делает его скорее путем обновления классического ASP с использованием классического JScript, чем новым первоклассным языком.
JScript .NET не поддерживается в .NET Compact Framework . [ требуется ссылка ]
Примечание: Версии JScript .NET не связаны с классическими версиями JScript. JScript .NET — это отдельный продукт. Несмотря на то, что JScript .NET не поддерживается в Visual Studio IDE, его версии синхронизированы с версиями других языков .NET ( C# , VB.NET , VC++ ), которые следуют за соответствующими версиями Visual Studio.
.NET Framework 3.0 и 3.5 созданы на основе 2.0 и не включают более новую версию JScript.NET (версию 10.0 для .NET Framework 4.0).
(Источник: версия файла jsc.exe компилятора JScript.NET и Microsoft.JScript.dll, установленная с .NET Framework)