| CARVIEW |
JavaScript
Матеріал з Вікіпедії — вільної енциклопедії.
| Парадигма: | багатопарадигмова: Прототипна, імперативна, функціональна[1] скриптова мова |
|---|---|
| Дата появи: | 1995 |
| Творці: | Brendan Eich |
| Розробник: | Netscape Communications Corporation |
| Система типізації: | качача типізація |
| Основні реалізації: | SpiderMonkey, Rhino, KJS, JavaScriptCore |
| Діалекти: | JScript |
| Під впливом від: | Self, Perl |
JavaScript — назва реалізації стандарта мови програмування ECMAScript компанії Netscape, базується на принципах прототипно-орієнтованого програмування. Найпоширеніше і найвідоміше застосування мови — написання сценаріїв для веб-сторінок, але, також, використовується для впровадження сценаріїв керування об'єктами вбудованими в інші програми.
Не зважаючи на схожість назв, JavaScript та мова програмування Java мають дуже мало спільного. Права на назву JavaScript належать компанії Sun Microsystems.[2]
Розроблена в компанії Netscape. На теперішній час підтримується більшістю браузерів. Текст програми включається безпосередньо в HTML-документ і інтерпретується самим браузером. Застосовується в основному для часткової автоматизації обробки і маніпуляції даними, які використовує сторінка.
Станом на 2006 рік, останній стандарт мови — JavaScript 1.7. Якщо спрощено, то ECMA-262 є стандартизованим варіантом мови JavaScript. Стандартом ECMA-357 визначено E4X, розширення мови для роботи з XML.
Зміст |
[ред.] Про мову
JavaScript має низку властивостей об'єктно-орієнтованої мови, але завдяки концепції прототипів підтримка об'єктів в нім відрізняється від традиційних мов ООП. Крім того, JavaScript має ряд властивостей, властивих функціональним мовам, — функції як об'єкти першого рівня, об'єкти як списки, каррінг (currying), анонімні функції, замикання (closures) — що додає мові додаткову гнучкість.
JavaScript має 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="https://Шлях_до_файла_зі_скриптом"></script>
[ред.] Зневадження
При розробці великих і нетривіальних веб-застосунків з використанням JavaScript, критично важливим є доступ до інструментів зневадження. Оскільки браузери від різних виробників дещо відрізняються у поведінці JavaScript і реалізації Об'єктної Моделі Документа, треба мати в руках зневаджувач для кожного браузера, якщо веб-застосування орієнтовано на нього.
На данний час Internet Explorer, Firefox, Opera, Google Chrome та Safari мають зневаджувачі для себе.
Internet Explorer має три звеваджувача для себе: Microsoft Visual Studio є найпотужнішим з цих трьох, слідом йде Microsoft Script Editor (компонента Microsoft Office[3]), і нарешті існує безплатний Microsoft Script Debugger з базовими функціями. Веб-застосування для Firefox допоможе привести до ума додаток Firebug (зручно вбудований безпосередньо в браузер), або давніший відладчик Venkman, котрий також працює з браузером Mozilla. Drosera — це звеваджувач з WebKit engine[4], що супроводжує Apple Safari.
Також існують кілька інструментів, як вільних, наприклад JSLint[5], інструмент перевірки якості коду, що сканує 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[6] на січень 2008).
[ред.] Виноски
- ↑ 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.»
- ↑ https://www.sun.com/suntrademarks/
- ↑ JScript development in Microsoft Office 11 (MS InfoPath 2003)
- ↑ Introducing Drosera — Surfin' Safari
- ↑ JSLint help page
- ↑ spylog.ru
[ред.] Дивіться також
- ActionScript — реалізація від Adobe для Flash.
- Rhino — реалізація на Java.
- JScript — реалізація в Інтернет Експлорер від Microsoft.
- DOM — об’єктна модель документа.
- Firebug
- AJAX
- JSON
- JSAN
[ред.] Ресурси інтернет
- ECMA-262, ECMAScript Language Specification.
- Стандарт ECMA-262 (англ.) (третє видання; формат PDF)
- JavaScript домашня сторінка на mozilla.org.
- Довідник з JavaScript версії 1.5: 1.5
- Зміни в нових версіях JavaScript: 1.7, 1.6
- IBM Developerworks, JavaScript's language features.
- Довідник с прикладами(англ.)
- Зібрання посилань за темою(англ.)
- Підтримка JavaScript різними браузерами(англ.)
- Довідник з JavaScript(рос.)
- Ядро JavaScript. Справочник.(рос.)
- Автор мови Брендан Ейх розповідає про історію мови(англ.)
- www.nakedjavascript.com(англ.)
- Mozilla JavaScript shells (англ.)
- Mozilla (Rhino engine) JavaScript shell (англ.)
- Seed(англ.), Server-side JavaScript(англ.) — особливо цікавими виглядают пункти: Node.js, GLUEscript, Ejscript - що, також, можуть бути використані для забезпечення «утилітарного» JavaScript програмування під юнікс-подібними операційними системами
Перегляди
Особисті інструменти
Панель інструментів
Друк/експорт
Іншими мовами
- Afrikaans
- العربية
- Žemaitėška
- Беларуская
- Беларуская (тарашкевіца)
- Български
- ᨅᨔ ᨕᨘᨁᨗ
- Català
- Česky
- Чӑвашла
- Dansk
- Deutsch
- Ελληνικά
- English
- Esperanto
- Español
- Eesti
- Euskara
- فارسی
- Suomi
- Français
- Galego
- עברית
- हिन्दी
- Hrvatski
- Magyar
- Interlingua
- Bahasa Indonesia
- Íslenska
- Italiano
- 日本語
- Basa Jawa
- ქართული
- ភាសាខ្មែរ
- 한국어
- Lietuvių
- Latviešu
- Македонски
- മലയാളം
- Монгол
- Bahasa Melayu
- مازِرونی
- Nederlands
- Norsk (bokmål)
- Polski
- Português
- Română
- Русский
- Саха тыла
- Simple English
- Slovenčina
- Slovenščina
- Shqip
- Српски / Srpski
- Svenska
- தமிழ்
- Тоҷикӣ
- ไทย
- Türkçe
- Tiếng Việt
- 中文
- 粵語
- Остання зміна цієї сторінки: 16:59, 24 червня 2010.
- Текст доступний на умовах ліцензії Creative Commons Attribution/Share-Alike, також можуть діяти додаткові умови. Детальніше див. Умови використання.
- Політика конфіденційності
- Про Вікіпедію
- Відмова від відповідальності