aboutsummaryrefslogtreecommitdiff
path: root/files/ru/web/javascript/guide/introduction/index.html
blob: c9881446a190ff27cc0f55c57d749e98867aaca8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
---
title: Введение в JavaScript
slug: Web/JavaScript/Guide/Introduction
tags:
  - Beginner
  - Guide
  - JavaScript
translation_of: Web/JavaScript/Guide/Introduction
original_slug: Web/JavaScript/Guide/Введение_в_JavaScript
---
<p>{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide", "Web/JavaScript/Guide/Values,_variables,_and_literals")}}</p>

<div class="summary">
<p>Данная глава является введением в JavaScript и рассматривает некоторые его фундаментальные концепции.</p>
</div>

<h2 id="Что_вам_уже_следует_знать">Что вам уже следует знать?</h2>

<p>В данном руководстве предполагается, что вы имеете:</p>

<ul>
 <li>Общее понимание Internet и World Wide Web ({{Glossary("WWW")}}).</li>
 <li>Хорошее знание HyperText Markup Language ({{Glossary("HTML")}}).</li>
 <li>Некоторый опыт программирования. Если вы являетесь новичком в программировании, то ознакомьтесь с руководствами, приведёнными на странице по <a href="https://developer.mozilla.org/ru/docs/Web/JavaScript">JavaScript</a>.</li>
</ul>

<h2 id="Где_можно_найти_информацию_о_JavaScript">Где можно найти информацию о JavaScript?</h2>

<p>Документация по JavaScript на MDN включает:</p>

<ul>
 <li><a href="https://developer.mozilla.org/ru/docs/Learn">Изучение Web</a> предоставляет информацию для начинающих и вводит в базовые концепции программирования и Internet.</li>
 <li><a href="https://developer.mozilla.org/ru/docs/Web/JavaScript/Guide">Руководство по JavaScript</a> (данное руководство) предоставляет обзор JavaScript и его объектов.</li>
 <li><a href="https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference">Справочник по JavaScript</a> предоставляет подробную информацию по JavaScript.</li>
</ul>

<p>Если вы являетесь новичком в JavaScript, то начните с <a href="https://developer.mozilla.org/ru/docs/Learn">Изучение Web</a> и <a href="https://developer.mozilla.org/ru/docs/Web/JavaScript/Guide">Руководство по JavaScript</a>. Как только вы освоите фундаментальные концепции, используйте <a href="https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference">Справочник по JavaScript</a> для того, чтобы получить более подробную информацию о конкретных объектах или операторах.</p>

<h2 id="Что_такое_JavaScript">Что такое JavaScript?</h2>

<p>JavaScript — это кросс-платформенный, объектно-ориентированный скриптовый язык, являющийся небольшим и легковесным. Внутри среды исполнения JavaScript может быть связан с объектами данной среды и предоставлять программный контроль над ними.</p>

<p>JavaScript включает стандартную библиотеку объектов, например, <code>Array</code>, <code>Date</code> и <code>Math</code>, а также базовый набор языковых элементов, например, операторы и управляющие конструкции. Ядро JavaScript может быть расширено для различных целей путём добавления в него новых объектов, например:</p>

<ul>
 <li>JavaScript на стороне клиента расширяет ядро языка, предоставляя объекты для контроля браузера и его Document Object Model (DOM). Например, клиентские расширения позволяют приложению размещать элементы в форме HTML и обрабатывать пользовательские события, такие как щелчок мыши, ввод данных в форму и навигация по страницам.</li>
 <li>JavaScript на стороне сервера расширяет ядро языка, предоставляя объекты для запуска JavaScript на сервере. Например, расширение на стороне сервера позволяет приложению соединяться с базой данных, обеспечивать непрерывность информации между вызовами приложения или выполнять манипуляции над файлами на сервере.</li>
</ul>

<h2 id="JavaScript_и_Java">JavaScript и Java</h2>

<p>JavaScript и Java похожи в одних отношениях, но фундаментально отличны в других. Javascript напоминает Java, но не имеет статической типизации и строгой проверки типов, которыми обладает Java. JavaScript следует большей части синтаксиса Java в выражениях, соглашениях об именовании и основного потока управления конструкциями, поэтому он был переименован из LiveScript в JavaScript.</p>

<p>В отличие от системы скомпилированных классов Java, построенной на объявлениях, JavaScript поддерживает систему исполнения, основанную на небольшом числе типов данных, представляющих числовые, логические и строковые значения. JavaScript имеет объектную модель на базе прототипов вместо более общей модели на базе классов. Модель объектов на базе прототипов предоставляет динамическое наследование, т.е. то, что наследуется, может отличаться для отдельных объектов. JavaScript также поддерживает функции без каких-либо специальных декларативных требований. Функции могут быть свойствами объектов, выполняться как свободно-типизированные методы.</p>

<p>По сравнению с Java, JavaScript является языком с очень свободной формой. Вам не надо объявлять переменные, классы и методы. Вам не надо беспокоиться о том, являются ли методы публичными (public), приватными (private) или защищёнными (protected), а также вам не надо реализовывать интерфейсы. Переменные, параметры и возвращаемые функциями типы не являются явно типизированными.</p>

<p>Java — это язык программирования, основанный на классах и предназначенный для быстрого выполнения и безопасности типов. Безопасность типов означает, например, что вы не можете привести тип integer к типу object reference или получить доступ к приватной памяти, изменяя байт-код Java. Ориентированная на классы модель Java означает, что программы состоят исключительно из классов и их методов. Наследование классов и строгая типизация в Java обычно требуют тесно связанные иерархии объектов. Эти требования делают программирование на Java более комплексным, чем программирование на JavaScript.</p>

<p>По духу JavaScript происходит от небольших, динамически типизированных языков, таких как HyperTalk и dBASE. Эти скриптовые языки предлагают инструменты программирования для гораздо более широкой аудитории благодаря более простому синтаксису, специализированной встроенной функциональности и минимальным требованиям для создания объектов.</p>

<table class="standard-table">
 <caption>Сравнение JavaScript и Java</caption>
 <thead>
  <tr>
   <th scope="col">JavaScript</th>
   <th scope="col">Java</th>
  </tr>
 </thead>
 <tbody>
  <tr>
   <td>Объектно-ориентированный. Нет различий между типами объектов. Наследование реализовано через механизм прототипов, свойства и методы могут быть добавлены в любой объект динамически.</td>
   <td>На базе классов. Объекты делятся на классы и экземпляры с наследованием через классовую иерархию. Классы и экземпляры не могут иметь динамически добавленные свойства или методы.</td>
  </tr>
  <tr>
   <td>Типы данных переменных не объявляются (динамическая типизация).</td>
   <td>Типы данных переменных должны быть объявлены (статическая типизация).</td>
  </tr>
  <tr>
   <td>Не может автоматически записывать на жёсткий диск.</td>
   <td><span style="background-color: rgba(212, 221, 228, 0.14902);">Может автоматически записывать на жёсткий диск.</span></td>
  </tr>
 </tbody>
</table>

<p>Для получения дополнительной информации о различиях между JavaScript и Java, прочитайте <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Details_of_the_Object_Model">Details of the object model</a>.</p>

<h2 id="JavaScript_и_спецификация_ECMAScript">JavaScript и спецификация ECMAScript</h2>

<p>JavaScript стандартизирован европейской ассоциацией <a href="http://www.ecma-international.org/">Ecma International</a>, деятельность которой посвящена стандартизации информационных и коммуникационных систем (изначально ECMA являлся акронимом European Computer Manufacturers Association). Эта стандартизированная версия JavaScript, называемая ECMAScript, работает одинаково во всех приложениях, поддерживающих стандарт. Компании могут использовать открытый стандарт языка, чтобы разработать собственную реализацию JavaScript. Стандарт ECMAScript задокументирован в спецификации ECMA-262. Чтобы узнать больше информации о разных версиях JavaScript и ECMAScript, прочитайте <a href="https://developer.mozilla.org/ru/docs/Web/JavaScript/New_in_JavaScript">Что нового в JavaScript</a>.</p>

<p>Стандарт ECMA-262 также утверждён <a href="http://www.iso.org/iso/home.html">ISO</a> (International Organization for Standardization) как ISO-16262. Вы можете найти спецификацию на <a href="http://www.ecma-international.org/publications/standards/Ecma-262.htm">сайте Ecma International</a>. Спецификация ECMAScript не описывает Document Object Model (DOM), которая стандартизирована <a href="http://www.w3.org/">World Wide Web Consortium (W3C)</a>. DOM определяет способ для доступа к объектам HTML документа из вашего скрипта. Чтобы получить более точное представление о различных технологиях, используемых при программировании на JavaScript, прочитайте <a href="https://developer.mozilla.org/ru/docs/Web/JavaScript/JavaScript_technologies_overview">Обзор JavaScript</a>.</p>

<h3 id="Документация_JavaScript_против_спецификации_ECMAScript">Документация JavaScript против спецификации ECMAScript</h3>

<p>Спецификация ECMAScript — это набор требований, касающихся реализации ECMAScript. Она предназначена для реализации языковых возможностей, соответствующих стандарту, в вашей реализации ECMAScript или движке (например, SpiderMonkey в Firefox или V8 в Google Chrome).</p>

<p>Документ ECMAScript не предназначен для помощи программистам в создании скриптов; чтобы получить информацию о том, как писать скрипты, используйте документацию JavaScript.</p>

<p>Спецификация ECMAScript использует терминологию и синтаксис, которые могут быть незнакомы JavaScript-программистам. Хотя описание языка может отличаться в ECMAScript, но сам язык остаётся таким же. JavaScript поддерживает всю функциональность, описанную в спецификации ECMAScript.</p>

<p>Документация JavaScript описывает аспекты языка, являющиеся подходящими для JavaScript-программиста.</p>

<h2 id="Начинаем_знакомство_с_JavaScript">Начинаем знакомство с JavaScript</h2>

<p>Все, что вам нужно для знакомства с JavaScript — это современный браузер. Данное руководство включает некоторые возможности JavaScript, которые на данный момент доступны только в последних версиях Firefox, поэтому рекомендуется использовать последнюю версию Firefox.</p>

<p>В Firefox встроены два инструмента, полезных для экспериментирования с JavaScript: Web Console и Scratchpad.</p>

<h3 id="Web_Console">Web Console</h3>

<p><a href="https://developer.mozilla.org/ru/docs/Tools/Web_Console">Web Console</a> отображает информацию о текущей загруженной веб-странице, а также включает <a href="https://developer.mozilla.org/ru/docs/Tools/Web_Console#The_command_line_interpreter">командную строку</a>, которую вы можете использовать, чтобы выполнить выражения JavaScript на текущей странице.</p>

<p>Чтобы открыть Web Console, выберите "Web Console" из меню "Web Developer", которое находится под меню "Tools" в Firefox. Консоль появится в нижней части окна браузера. Вдоль нижней части консоли размещается командная строка, которую вы можете использовать для ввода JavaScript, результат выполнения появится на панели выше:</p>

<p><img alt="" src="https://mdn.mozillademos.org/files/16569/2019-04-04_00-15-29.png" style="display: block; height: 1824px; margin-left: auto; margin-right: auto; width: 2784px;"></p>



<pre>function greetMe(yourName) {
  alert('Hello ' + yourName);
}
<code>console.log(eval('3 + 5'));</code></pre>



<h3 id="Scratchpad">Scratchpad</h3>

<p>Web Console отлично подходит для выполнения одиночных строк JavaScript, но хотя вы можете выполнить и несколько строк, это не очень удобно, к тому же вы не можете сохранить ваш код, используя Web Console. Поэтому для более комплексных примеров <a href="https://developer.mozilla.org/ru/docs/Tools/%D0%A7%D0%B5%D1%80%D0%BD%D0%BE%D0%B2%D0%B8%D0%BA">Scratchpad</a> является более подходящим инструментом.</p>

<p>Чтобы открыть Scratchpad(<kbd>Shift</kbd>+<kbd>F4</kbd>), выберите "Scratchpad" из меню "Web Developer", которое находится под меню "Tools" в Firefox. Блокнот будет открыт в отдельном окне, вы можете использовать его для создания и выполнения JavaScript в браузере. Вы также можете сохранять ваши скрипты на жёсткий диск, а потом загружать их.</p>

<p>Если вы выберете "Display", то код в вашем блокноте будет выполнен в браузере, а результат вставлен обратно в блокнот как комментарий:</p>

<p><img alt="" src="https://mdn.mozillademos.org/files/13468/scratchpad.png" style="display: block; height: 375px; margin-left: auto; margin-right: auto; width: 631px;"></p>

<h3 id="Hello_world">Hello world</h3>

<p>Чтобы начать писать JavaScript-код откройте Scratchpad и напишите свой первый "Hello World!" код:</p>

<pre><code>(function(){
  "use strict";
  /* Start of your code */
  function greetMe(yourName) {
    alert('Hello ' + yourName);
  }

  greetMe('World');
  /* End of your code */
})();</code></pre>

<p>Выберите код на панели и зажмите Ctrl + R, чтобы открыть код в браузере! На следующих страницах мы изучим синтаксис и возможности JS, чтобы вы могли написать более сложное приложение. Не забывайте добавлять перед кодом <code>(function(){"use strict";</code> и <code>})();</code>  после. вы узнаете, что это означает, а пока считайте, что это —</p>

<p>1.  Значительно улучшает производительность</p>

<p>2.  Предотвращает структуры, которые могут запутать вас на начальном этапе.</p>

<p>3.  Предотвращает взаимодействие фрагментов кода, выполняемых в консоли.</p>

<p>{{PreviousNext("Web/JavaScript/Guide", "Web/JavaScript/Guide/Grammar_and_types")}}</p>