JavaScript

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук
JavaScript
Парадигма: багатопарадигмова:
Прототипна,
імперативна,
функціональна[1]
скриптова мова
Дата появи: 1995
Творці: Брендан Айк
Розробник: Netscape Communications Corporation
Останній реліз: 1.8.5[2] (22 березня 2011; 1129 днів тому)
Система типізації: качина типізація
Основні реалізації: SpiderMonkey, Rhino, KJS, JavaScriptCore, V8
Діалекти: JScript
Під впливом від: Self, Perl

JavaScript — назва реалізації стандарту мови програмування ECMAScript компанії Netscape, базується на принципах прототипного програмування. Найпоширеніше і найвідоміше застосування мови — написання сценаріїв для веб-сторінок, але, також, використовується для впровадження сценаріїв керування об’єктами вбудованими в інші програми.

Незважаючи на схожість назв, JavaScript та мова програмування Java мають дуже мало спільного. Права на назву Java належать компанії Sun Microsystems.[3]

JavaScript розроблений у компанії Netscape. На сьогоднішній день підтримується більшістю браузерів. Текст програми включається безпосередньо в HTML-документ і інтерпретується самим браузером (точніше, вбудованим у браузер рушієм JavaScript). Застосовується в основному для часткової автоматизації обробки і маніпуляції даними, які використовує сторінка.

Станом на 2006 рік, останній стандарт мови — JavaScript 1.7. Якщо спрощено, то ECMA-262 є стандартизованим варіантом мови JavaScript. Стандартом ECMA-357 визначено E4X, розширення мови для роботи з XML.

Про мову[ред.ред. код]

JavaScript має низку властивостей об’єктно-орієнтованої мови, але завдяки концепції прототипів підтримка об’єктів в ній відрізняється від традиційних мов ООП. Крім того, JavaScript має ряд властивостей, притаманних функціональним мовам, — функції як об’єкти першого рівня, об’єкти як списки, каррінг (currying), анонімні функції, замикання (closures) — що додає мові додаткову гнучкість.

JavaScript має C-подібний синтаксис, але в порівнянні з мовою Сі має такі корінні відмінності:

JavaScript містить декілька вбудованих об’єктів: Global, Object, Error, Function, Array, String, Boolean, Number, Math, Date, RegExp. Крім того, JavaScript містить набір вбудованих операцій, які, строго кажучи, не обов’язково є функціями або методами, а також набір вбудованих операторів, що управляють логікою виконання програм. Синтаксис JavaScript в основному відповідає синтаксису мови Java (тобто, зрештою, успадкований від C), але спрощений порівняно з ним, щоб зробити мову сценаріїв легкою для вивчення. Так, приміром, декларація змінної не містить її типу, властивості також не мають типів, а декларація функції може стояти в тексті програми після неї

Семантика мови схожа з семантикою мови Self.

Приклад оголошення і використання класу в JavaScript (клас є одночасно функцією, оскільки функції — це об’єкти першого рівня):

 function MyClass()
 {
   this.myValue1 = 1;
   this.myValue2 = 2;
 }
 
 var mc = new MyClass();
 mc.myValue1 = mc.myValue2 * 2;

Одна з популярних технологій, що дозволила зробити сторінки динамічнішими і забезпечити нові можливості — це динамічне завантаження і вставка даних в документ, що отримала назву AJAX.

Використання в HTML[ред.ред. код]

При використанні в рамках технології DHTML JavaScript код включається в HTML-код сторінки і виконується інтерпретатором, вбудованим в браузер. Код JavaScript вставляється в теги <script></script> з обов’язковим по специфікації HTML 4.01 атрибутом type="text/javascript", хоча в більшості браузерів мова сценаріїв за умовчанням саме JavaScript.

Скрипт, що виводить модальне вікно з класичним написом «Hello, World!» усередині браузера:

<script type="text/javascript">
  alert('Hello, World!');
</script>

Слідуючи концепції інтеграції JavaScript в існуючі системи, браузери підтримують включення скрипта, наприклад, в значення атрибуту події:

 <a href="delete.php" onclick="return confirm('Ви впевнені?');">Видалити</a>

Тут при натисненні на посилання функція confirm('Ви впевнені?'); викликає модальне вікно з написом «Ви впевнені?», а return false; блокує перехід за посиланням. Зрозуміло, цей код працюватиме тільки якщо в браузері є і включена підтримка JavaScript, інакше перехід за посиланням відбудеться без попередження.

Є і третя можливість підключення JavaScript — написати скрипт в окремому файлі, а по тому підключити його за допомогою конструкції:

<script type="text/javascript" src="http://Шлях_до_файла_зі_скриптом"></script>

Зневадження[ред.ред. код]

При розробці великих і нетривіальних веб-застосунків з використанням JavaScript, критично важливим є доступ до інструментів зневадження. Оскільки браузери від різних виробників дещо відрізняються у поведінці JavaScript і реалізації Об'єктної Моделі Документа, треба мати в руках зневаджувач для кожного браузера, якщо веб-застосування орієнтовано на нього.

На даний час Internet Explorer, Firefox, Opera, Google Chrome та Safari мають зневаджувачі для себе.

Internet Explorer має три звеваджувача для себе: Microsoft Visual Studio є найпотужнішим з цих трьох, слідом йде Microsoft Script Editor (компонента Microsoft Office[4]), і нарешті існує безплатний Microsoft Script Debugger з базовими функціями. Веб-застосування для Firefox допоможе привести до розуму додаток Firebug (зручно вбудований безпосередньо в браузер), або давніший відладчик Venkman, котрий також працює з браузером Mozilla. Drosera — це зневаджувач з WebKit engine[5], що супроводжує Apple Safari.

Також існують кілька інструментів, як вільних, наприклад JSLint[6], інструмент перевірки якості коду, що сканує JavaScript програму, шукаючи проблеми коду, так і комерційних продуктів типу інструменту з назвою JavaScript Debugger.

Оскільки JavaScript є інтерпретатором, без строгої типізації, і може виконуватися в різних середовищах, кожне зі своїми власними особливостями сумісності, програміст має бути дуже уважним, і повинен перевіряти, що його код виконується як очікується в широкому переліку можливих конфігурацій. Дуже часто трапляються випадки, коли скрипт, що чудово працює в одному середовищі, видає некоректні результати в іншому.

Кожен блок сценарію інтерпретатор розбирає окремо. На веб-сторінках, коли треба комбінувати блоки JavaScript та HTML, синтаксичні помилки найти легше, якщо тримати функції сценарію в окремому блоці коду, або (ще краще) використовувати багато малих пов’язаних .js файлів. В такий спосіб синтаксична помилка не спричинятиме «падіння» цілої сторінки, і можна надати допомогу, елегантно вийшовши зі сторінки.

Версії[ред.ред. код]

JavaScript JScript ECMAScript
1.0 (Netscape 2.0, березень 1996) 1.0 (рані версії IE 3.0, серпень 1996)
1.1 (Netscape 3.0, серпень 1996) 2.0 (пізні версії IE 3.0, січень 1997)
1.2 (Netscape 4.0, червень 1997)
1.3 (Netscape 4.5, жовтень 1998) 3.0 (IE 4.0, жовтень 1997) Редакція 1 (червень 1997) / редакція 2 (червень 1998)
1.4 (тільки Netscape Server) 4.0 (Visual Studio 6, нема версії IE)
5.0 (IE 5.0, березень 1999)
5.1 (IE 5.01)
1.5 (Netscape 6.0, листопад 2000; також
пізні версії Netscape і Mozilla)
5.5 (IE 5.5, липень 2000) Редакція 3 (грудень 1999)
5.6 (IE 6.0, жовтень 2001)
1.6 (Gecko 1.8, Firefox 1.5, листопад 2005) Редакція 3 з деякими сумісними поліпшеннями: E4X, доповнення до Array (наприклад, Array.prototype.forEach), спрощення для Array і String [1](англ.)
Редакція 3, з додаванням всіх поліпшень з JavaScript 1.6, генераторів і облікових виразів (list comprehensions, [a*a for (а in iter)]) з Python, блокових областей з використанням let і деструктуруючих присвоєнь (var [а,b]=[1,2]) [2](англ.)
JScript .NET (ASP.NET; нема версії IE) (Вважається, що JScript .NET розроблений за участі інших членів ECMA)
2.0 (стара пропозиція Netscape) Редакція 4 (у розробці)

Статистика використання[ред.ред. код]

Реальний звіт про використання JavaScript в браузерах свідчить, що

  • біля 90 % користувачів мають встановленим JavaScript версії 1.3,
  • близько 4 % — версію 1.0,
  • близько 3.5 % — версію 1.5,
  • близько 2.5 % — версію 1.6,

решта версій зустрічається в долях відсотка (джерело — spylog.ru[7] на січень 2008).

Виноски[ред.ред. код]

  1. Douglas Crockford on Functional JavaScript (2:49): «[JavaScript] is also coincidentally the world's most popular functional programming language. JavaScript is and has always been, at least since [version] 1.2, a functional programming language.»
  2. «New in JavaScript 1.8.5 | Mozilla Developer Network». Developer.mozilla.org. 2012-11-18. Процитовано 2013-05-26. 
  3. http://www.sun.com/suntrademarks/
  4. JScript development in Microsoft Office 11 (MS InfoPath 2003)
  5. Introducing Drosera — Surfin' Safari
  6. JSLint help page
  7. spylog.ru

Дивіться також[ред.ред. код]

Ресурси інтернет[ред.ред. код]