XYZ-Scripts или еще тот зверинец

Вот был в 2000ых годах обычный JavaScript и никто не парился. Были под него свои трюки под каждый браузерный косяк, но их все знали и применяли. Еще был VBScript, позволяющий из браузера в операционке баловаться и ActionScript - им для Flash пользовались.
Далее появились технологии и манера трюков перекочевала и туда.

пример создания объекта для реализации ajax запроса:
function ajax_create() {
var xmlHttp=new Object();

if (window.XMLHttpRequest) {
try {xmlHttp = new XMLHttpRequest();}
catch(e){ xmlHttp = false;}
else if (window.ActiveXObject) {
try { xmlHttp = new ActiveXObject("MSXML2.XMLHTTP");}
catch (e)
{
try { xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');} 
catch (e){ xmlHttp = false;}
}
}
if(!xmlHttp )
alert('error creating xml obj!');
return xmlHttp;
}

Со временем трюков стало много и появились универсальные решения "поставил и работает", гарантирующие более менее кроссбраузерность. Эту тенденцию подхватили библиотеки, которые потом стали "играться парадигмами" и вот — в мир пришли jQuery, Knockout и AngularJS.

Но создателям скриптовых языков неймётся:



Был задуман в 2011 году как замена JS, устраняющая его недостатки. Исполнение либо под виртуальной машиной на стороне сервера либо трансляцией в JS на стороне клиента ( либо Dartboard для небольших скриптов). 
Здесь могут добавлять статические типы для своих нужд. Классы и интерфейсы заточены под создание API и упрощают инкапсуляцию, повторное использование методов и данных:
Интерфейс определяет базовый набор методов и констант, которые могут также унаследовать от других интерфейсов. Класс может осуществить несколько интерфейсов, но унаследовать может только от одного суперкласса.
Целью является возможность запуска на всевозможных веб-устройствах, включая телефоны, планшеты, компьютеры и серверы.
Поговаривают, что Dart уже не тот: 
«Dart is going downhill, nobody uses it except the Dart team»
Но Dart не сдаётся - в конце марта, 2015-го заявляется о «предоставлении возможностей для более продуктивного создания веб-приложений на языке Dart» и принятия решения «не интегрировать виртуальную машину Dart в Chrome».


Язык программирования разработанный в 2012 году в Microsoft для разработки web-applications с более богатым чем в JS функционалом. В Microsoft применялся JS и им потребовалась совместимость с принятыми стандартами программирования.
TypeScript обратно совместим с JavaScript — компилируется в него. 
В TS стала возможна статическая типизация (определение типов), поддержка традиционной ООП схемы классов и поддержка подключения модулей, механизмы примесей (mix in) и т.д.


AtScript создан в недрах Google в 2014ом. Он расширяет вышеупомянутый Typescript и является основой для новой 2 версии AngularJS. Представляет из себя ECMAScript 6 "с типами", с объявлениями и проверкой типа (introspection).



Однако и разработка этой разновидности прекращена, а фичи будут перенесены в TypeScript:
«AtScript is Typescript»




Язык программирования, транслируемый в JavaScript. Добавляет синтаксический сахар в духе Ruby, Python, Haskell и Erlang для того, чтобы улучшить читаемость кода и уменьшить его размер.
Встраиваемый, расширяемый язык программирования, используется как прототип для реализации других скриптовых языков. Не имеет механизма ввода-вывода.
Основа для JavaScript, JScript и ActionScript.
Поддерживаются пять примитивных типов данных:
  • числовой (англ. Number)
  • строковый (англ. String)
  • логический (англ. Boolean)
  • нулевой (англ. Null)
  • неопределённый
И один составной - Object.

Функции являются объектами. Т.е. функции имеют свойства и могут храниться в переменных, объектах, массивах. Могут передаваться в другие функции как аргументы, а также могут быть возвращены из функции.

реализация перегрузки функций в ECMAScript:
function sum(arg1, arg2, arg3) {
if (arg3 !== undefined) {
return arg1 + arg2 + arg3;
} else {
return arg1 + arg2;
}
}

Есть call-back концепция (когда функцию А передают как аргумент в функцию Б и она в этой функции Б и вызывается), в том числе и для анонимных функций.
Есть рекурсия без реализации хвостовой рекурсии.

Область видимости определяется в момент определения (не вызова) функции, т.е. если функция А определена внутри функции Б, то в процессе выполнения программы функция А имеет доступ к переменным функции Б в течение выполнения программы.

Для ограничения видимости переменных автономного участка программы используется механизм замыкания — код помещается в анонимную функцию, снабжаемую оператором вызова функции:
(function() {
var a = 123; // переменная а не доступна извне. 
 })();

И так далее...
Классификации ECMA-262, ISO/IEC 16262 - всё как положено.

Снова о JavaScript

Но давайте снова вернёмся в 1996 год. Именно тогда товарищи из Nescape вводят JavaScript на сцену и Microsoft cо своей IE 3.0 также пожелала внедрить подобное, а так как были торгово-маркетинговые напряжения, то Microsoft называет свой язык по другому - JScript
Исполнение JScript осуществлялось через систему объектной имплементации в IE. В последствии, через нее стало возможно запускать, по сути, любые скриптовые движки — нужно было только предоставить их реализацию под Windows в виде ActiveX Scripting компонента.
Таким образом, на свет и появилась большое количество выполняемых под IE скриптовых разновидностей: JScriptPerlScript, VBScript, PythonScript, ActivePHPScript, RubyScript, LuaScript, HaskellScript, TclScript и пр. Все они, кроме работы под IE браузером, имеют потенциальный доступ к админ-ресурсам Windows (через Windows Script Host), чем не пренебрегли воспользоваться вирусо-сочинятели.

А бодания между JavaScipt и JScript разрешились через ECMA стандартизацию и теперь считается что и JavaScript и JScript — реализации ECMAScript.