JavaScript (aka JS, Жиес, Яваскрипт, Жабаскрипт) — скриптовый язык программирования, один из трех китов современного Интернета. Именно создание JavaScript наибольшим образом повлияло на развитие нового поколения Интернета, позволив динамическое обновление страницы (в то время как CSS и HTML4 позволяли только красиво страницы оформить).

Технически это объектно-ориентированный, процедурный язык программирования. Был впервые анонсирован компанией Netspace в 1995 году. Язык был разработан для «оживления» статичных веб-страниц. С появлением этого языка сайты стали более интерактивными и дружелюбными. Не нужно путать с Java. Java и JavaScript это совершенно разные языки программирования.

Основная задача JS — жонглирование стилями элементов страницы, задание анимаций, всплывающих окон. Кроме того, JS может выполнять математические вычисления, устанавливать таймеры, работать с датой и временем, производить манипуляции с файлами куки. JS позволяет отправлять данные на сервер без перезагрузки страницы (технология AJAX). Таким образом экономится трафик и уменьшается нагрузка на сервер, а интерактивность веб-сайта не уступает обычным приложениям.

Язык поддерживается всеми браузерами (кроме осла, но для этого есть babel и полифилы), способен выполняться на серверах (благодаря такой поделке, как Node.JS), да на нем даже пишут десктопные программы на такой Б-гомерзкой вещи, как Electron.

Описание

JavaScript был разработан в 1995 году и получил в названии префикс «Java» за счет сотрудничества в разработке с Oracle по причине желания Netscape распространить свою поделку на большее число программистов, которые увидев название языка подумали бы: «Да это же прям как Java!». Собственно, из-за чего некоторые периодически путают Java и JavaScript, которые являются совершенно разными языками, используемыми для разных задач. Сам язык де-факто разработан в Netscape дней за 15, поэтому никто особо не переживал из-за таких потрясающих архитектурных решений, вроде глобальных переменных или тем более, что данные в скриптах представлены как строки. Достаточно было и того, что на страницах выполнялись какие-то действия при нажатии мышкой на какие-нибудь кнопки.

Настоящую популярность язык получил уже спустя 10 лет, когда началось внедрение технологии AJAX (обмена данными с сервером при помощи запросов скриптов, без обновления страницы), что предоставило совершенно новые возможности создания интерактивного контента — стало возможно подгружать новый контент без перезагрузки страницы, что очень сильно повысило удобство и понятность работы (в старых сайтах типа LiveJournal надо было руками пролистывать старые страницы).

Ныне JavaScript имеется практически везде, на каждом сайте. Интересно, что в MediaWiki развитие джаваскрипта происходит очень медленно, все служебные действия производится на отдельных страница (типа удаления или отката) вместо того, чтобы делать их прямо на странице через JS. Большинство JS-инструментов написаны самими пользователями, а не разработчиками.

Есть также и возможность написания собственных JS-скриптов для автоматического применения их к страницам определенного сайта; в частности, имеются подобные расширения для Firefox (Greasemonkey), которые позволяют запускать скрипты любой сложности, например для автоподстановки каких-либо данных в формы.

Файлы JavaScript традиционно обладают расширением .js. В принципе JS-код можно встраивать непосредственно в текст страницы с использованием тега <script>, но это считается не особенно правильным и в основном практикуется разделение на файлы.

Безопасность

Долгое время существовали сомнения насчет безопасности JavaScript, так как он позволяет определить различные параметры системы (вроде разрешения экрана), которые невозможно получить нормальным методом. В связи с этим становится возможна массовая слежка за пользователями посредством анализа их оборудования. Некоторые беспокоятся еще и насчет IP-адреса, однако в большинстве случаев получить реальный IP с использованием скриптов как раз невозможно (впрочем, это возможно сделать на стороне приложения, к которому обращается JS-вебморда, так как все хранится в заголовках запроса). Различным криптошизам, беспокоящимся насчёт того, что через активные скрипты могут собирать метрики технологические гиганты, вроде Google или Microsoft, можно попробовать расширение NoScript, доступное как под Chrome-, так и Firefox- подобные браузеры. Разумеется, настраивать каждый сайт придётся ручками и не факт, что через скрипты самого сайта не ведется мониторинг, но скрипты вроде Google-аналитики и прочие можно безболезненно отсечь.

В старых версиях браузера Tor джаваскрипт был отключен в целях защиты персональных данных, но в более новых ограниченно включен, так как в противном случае ни один современный сайт просто не стал бы работать.

Встречаются до сих пор старомодные юзеры, которые пользуются очень старыми ОС и не менее старыми браузерами. В таких браузерах многие сайты открываются некорректно, также из-за тупизма самой системы может повисать комп и всё отключаться.

Для простого пользователя в принципе JavaScript безопасен. JS-скрипты выполняются в пределах окна браузера и не могут получить прямой доступ к системе. JS не может напрямую записывать и модифицировать файлы на ПК пользователя. Единственная угроза: JS может задолбать пользователя рекламными вплывающими баннерами и зависнуть страницу. Но есть один нюанс: если будут установлены левые вредоносные плагины для браузера, то хакер может получить доступ к такому плагину через JS, а уже этот плагин может натворить на ПК что угодно.

А вот в устаревшем IE JavaScript позволял получить доступ к ПК непосредственно без всяких плагинов и примочек. Непонятно зачем для IE придумали метод ActiveXObject (). Через этот метод JS может запустить на ПК объект ActiveX и сделать что угодно. Например, вот так можно запустить блокнот прямо из окна браузера:

	
var x=new ActiveXObject("WScript.Shell");
	
x.run("notepad.exe");
	

таким макаром можно запускать не только безобидный блокнот, но и редактировать реестр, модифицировать документы MS Word и многое другое. В последних версиях догадались сделать запуск ActiveX только с подтверждением юзера.

TypeScript

Несмотря на существование языка с 1995 года, многие программисты, изначально знакомые с строго типизированными языками, такими как Java, C#, C++, люто, бешенно фрустрировали с того, что мало того, что в JS совершенно нет типов, так и еще приходится отлаживать любую функцию либо через console.log(), либо прописывая в нужных местах debugger и пытаться пердолить встроенный в браузер отладчик. А, поскольку язык интерпретируемый, а не компилируемый, то ошибки с разницей типов, неправильным вызовом функции и прочие возникали ВО ВРЕМЯ ЗАПУСКА СКРИПТА, что превращало написание более-менее сложных скриптов в определенного рода пытку.

Более того, JS сам-по-себе был до определенного довольно ограниченным, вынуждая либо писать самому нужные программисту функции, раздувая и без того довольно запутанный код, либо применять, если можно так выразиться, диалекты JS, вроде CoffeeScript ради большей компактности и синтаксического сахара.

Все это дело продолжалось до 2012—2015 годов, пока не был утвержден стандарт ES6 и когда появился и стал популяризироваться разработанный корпорацией зла Его Величество TypeScript. TS позволяет писать код, аннотируя функции и переменные внутренними типами, либо, если это обременительно, использовать везде any, чтобы разработка не отличалась от стандартного JS. Встроенные типы позволяют на этапе написания кода сразу отлавливать вышеописанные ошибки и сохранять собственные силы, нервы и время. Сам код, написанный на TypeScript компилируется в стандартный JS, поэтому проблем с запуском в браузере не имеет.

Фактически, на данный момент, TypeScript является стандартом в отрасли Web-разработки: по умолчанию идет с фреймворком Angular, существует возможность писать приложения на React с использованием JS/TS/обоих одновременнно; многие пакеты для JS либо пишутся на TypeScript, либо, если написаны на JS, имеют декларацию типов, позволяя использовать библиотеки и в проектах с TypeScript.