0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Предлагаем вашему вниманию основные концепции языка программирования JavaScript, сопровождаемые примерами кода.</p>
1
<p>Предлагаем вашему вниманию основные концепции языка программирования JavaScript, сопровождаемые примерами кода.</p>
2
<h2>Немного истории</h2>
2
<h2>Немного истории</h2>
3
<p>Язык программирования JavaScript появился более 20 лет назад и прошёл за этот период времени довольно большой путь. Когда-то он был скромным инструментом для создания простых анимаций. Сегодня он регулярно попадает в топ-10 рейтинга Tiobe.</p>
3
<p>Язык программирования JavaScript появился более 20 лет назад и прошёл за этот период времени довольно большой путь. Когда-то он был скромным инструментом для создания простых анимаций. Сегодня он регулярно попадает в топ-10 рейтинга Tiobe.</p>
4
<p>Итак, JavaScript - это язык, имеющий высокий уровень абстракции, что даёт возможность сосредоточить своё внимание на коде, а не на низкоуровневой программной реализации. JS имеет слабую динамическую типизацию, поддерживая при этом разные парадигмы программирования.</p>
4
<p>Итак, JavaScript - это язык, имеющий высокий уровень абстракции, что даёт возможность сосредоточить своё внимание на коде, а не на низкоуровневой программной реализации. JS имеет слабую динамическую типизацию, поддерживая при этом разные парадигмы программирования.</p>
5
<p>JavaScript реализует стандарт ECMAScript, в результате чего название версий начинается ES: ES6, ES2018 и т. п. Версии нумеруются по году релиза и имеют порядковый номер. За развитие JavaScript отвечает комитет TC39, причём каждая новая функциональность должна пройти несколько этапов перед её принятием.</p>
5
<p>JavaScript реализует стандарт ECMAScript, в результате чего название версий начинается ES: ES6, ES2018 и т. п. Версии нумеруются по году релиза и имеют порядковый номер. За развитие JavaScript отвечает комитет TC39, причём каждая новая функциональность должна пройти несколько этапов перед её принятием.</p>
6
<h2>Стайлгайды для JavaScript-кода</h2>
6
<h2>Стайлгайды для JavaScript-кода</h2>
7
<p>Существуют соответствующие стайлгайды (от английского словосочетания Style Guide). Они необходимы для того, чтобы код на JavaScript был аккуратным и чистым. По сути, речь идёт о выработанной системе соглашений, которой придерживаются программисты в процессе разработки кода. Среди готовых стайлгайдов можно упомянуть системы соглашений от<a>Google</a>либо<a>AirBnb</a>.</p>
7
<p>Существуют соответствующие стайлгайды (от английского словосочетания Style Guide). Они необходимы для того, чтобы код на JavaScript был аккуратным и чистым. По сути, речь идёт о выработанной системе соглашений, которой придерживаются программисты в процессе разработки кода. Среди готовых стайлгайдов можно упомянуть системы соглашений от<a>Google</a>либо<a>AirBnb</a>.</p>
8
<h2>Примеры переменных в JavaScript-коде</h2>
8
<h2>Примеры переменных в JavaScript-коде</h2>
9
<p>Имена функций и переменных в JS должны начинаться с буквы, символа подчёркивания либо $. Кроме того, могут содержаться даже иероглифы либо эмодзи! Что касается идентификаторов, то они регистрозависимы: otus и OTUS - это разные переменные.</p>
9
<p>Имена функций и переменных в JS должны начинаться с буквы, символа подчёркивания либо $. Кроме того, могут содержаться даже иероглифы либо эмодзи! Что касается идентификаторов, то они регистрозависимы: otus и OTUS - это разные переменные.</p>
10
<p>Также нельзя применять в качестве имен зарезервированные слова:</p>
10
<p>Также нельзя применять в качестве имен зарезервированные слова:</p>
11
<p>Чтобы создать переменную, следует использовать одно из 3-х ключевых слов: let, var либо const.</p>
11
<p>Чтобы создать переменную, следует использовать одно из 3-х ключевых слов: let, var либо const.</p>
12
<p>Какие тут<strong>нюансы</strong>: • var-переменные обладают свойством хойстинга (поднятия) и имеют контекстную область видимости; • let и const имеют блочную видимость и не поднимаются; • неизменяемость const-переменных повсеместно применяются для обеспечения иммутабельности.</p>
12
<p>Какие тут<strong>нюансы</strong>: • var-переменные обладают свойством хойстинга (поднятия) и имеют контекстную область видимости; • let и const имеют блочную видимость и не поднимаются; • неизменяемость const-переменных повсеместно применяются для обеспечения иммутабельности.</p>
13
<h2>Примеры выражений в JavaScript-коде</h2>
13
<h2>Примеры выражений в JavaScript-коде</h2>
14
<p>Выражениями называют структурные единицы кода, которые можно как вычислить, так и преобразовать в значение.</p>
14
<p>Выражениями называют структурные единицы кода, которые можно как вычислить, так и преобразовать в значение.</p>
15
<h2>Примитивные типы данных в коде JavaScript</h2>
15
<h2>Примитивные типы данных в коде JavaScript</h2>
16
<p>Все числа в JS, включая целые, имеют тип float. Что касается строк, то они представляют собой последовательность символов в двойных либо одинарных кавычках, при этом принципиальной разницы между кавычками нет.</p>
16
<p>Все числа в JS, включая целые, имеют тип float. Что касается строк, то они представляют собой последовательность символов в двойных либо одинарных кавычках, при этом принципиальной разницы между кавычками нет.</p>
17
<p>Если нужно выполнить конкатенацию строк, подойдёт оператор +:</p>
17
<p>Если нужно выполнить конкатенацию строк, подойдёт оператор +:</p>
18
<p>Мы можем заполнить строку символами до определенной длины, сделав это как с начала, так и с конца:</p>
18
<p>Мы можем заполнить строку символами до определенной длины, сделав это как с начала, так и с конца:</p>
19
<p>Уже начиная с версии ES6, для создания строк появился новый синтаксис, который допускает многострочность и интерполяцию выражений:</p>
19
<p>Уже начиная с версии ES6, для создания строк появился новый синтаксис, который допускает многострочность и интерполяцию выражений:</p>
20
<h2>Примеры логических значений в коде JavaScript</h2>
20
<h2>Примеры логических значений в коде JavaScript</h2>
21
<p>Логические значения false и true применяются в сравнениях, циклах и условиях. Остальные типы данных можно приведены к логическому значению.</p>
21
<p>Логические значения false и true применяются в сравнениях, циклах и условиях. Остальные типы данных можно приведены к логическому значению.</p>
22
<p>Кроме того: - null значит, что у переменной нет значения. Собственно говоря, такая концепция есть не только в JavaScript, но и в других языках программирования (nil, None); - undefined значит, что у переменной нет значения, то есть она не инициализирована.</p>
22
<p>Кроме того: - null значит, что у переменной нет значения. Собственно говоря, такая концепция есть не только в JavaScript, но и в других языках программирования (nil, None); - undefined значит, что у переменной нет значения, то есть она не инициализирована.</p>
23
<p>Кстати, функции без директивы return вернут именно undefined. Являются undefined и неинициализированные параметры функций.</p>
23
<p>Кстати, функции без директивы return вернут именно undefined. Являются undefined и неинициализированные параметры функций.</p>
24
<h2>Примеры функций в коде на JavaScript</h2>
24
<h2>Примеры функций в коде на JavaScript</h2>
25
<p>Под функцией понимают самостоятельный блок кода на JavaScript, который можно применять в программе повторно. Функции можно вызывать, а также передавать им аргументы и получать новое значение.</p>
25
<p>Под функцией понимают самостоятельный блок кода на JavaScript, который можно применять в программе повторно. Функции можно вызывать, а также передавать им аргументы и получать новое значение.</p>
26
<p>Согласно концепции языка программирования JavaScript, функции - это объекты, а значит, могут иметь свои методы и свойства. Кроме того, функция может как быть аргументом либо возвращаемым значением другой функции, так и быть помещённой в переменную.</p>
26
<p>Согласно концепции языка программирования JavaScript, функции - это объекты, а значит, могут иметь свои методы и свойства. Кроме того, функция может как быть аргументом либо возвращаемым значением другой функции, так и быть помещённой в переменную.</p>
27
<p>Начиная с версии ES6, функции в JavaScript поддерживают дефолтные параметры:</p>
27
<p>Начиная с версии ES6, функции в JavaScript поддерживают дефолтные параметры:</p>
28
<p>Причём в списке параметров мы можем оставлять замыкающую запятую:</p>
28
<p>Причём в списке параметров мы можем оставлять замыкающую запятую:</p>
29
<p>Что касается возвращаемого значения, то по умолчанию все функции в JavaScript возвращают undefined, однако посредством директивы return мы можем вернуть единичное значение любого типа.</p>
29
<p>Что касается возвращаемого значения, то по умолчанию все функции в JavaScript возвращают undefined, однако посредством директивы return мы можем вернуть единичное значение любого типа.</p>
30
<p>Отдельного упоминания заслуживают замыкания. Их эффект основан на том, что области видимости в JS ограничены функциями. Но это тема отдельного разговора.</p>
30
<p>Отдельного упоминания заслуживают замыкания. Их эффект основан на том, что области видимости в JS ограничены функциями. Но это тема отдельного разговора.</p>
31
<p>Идём дальше. Когда функция определена как свойство какого-либо объекта, её называют методом этого объекта, а функция может ссылаться непосредственно на сам объект, используя ключевое слово this.</p>
31
<p>Идём дальше. Когда функция определена как свойство какого-либо объекта, её называют методом этого объекта, а функция может ссылаться непосредственно на сам объект, используя ключевое слово this.</p>
32
<p>Кстати, this мы можем установить искусственно посредством методов apply, call, bind:</p>
32
<p>Кстати, this мы можем установить искусственно посредством методов apply, call, bind:</p>
33
<p>Когда функцию вызывают не в контексте объекта, то её this равняется undefined.</p>
33
<p>Когда функцию вызывают не в контексте объекта, то её this равняется undefined.</p>
34
<h4>Стрелочные функции</h4>
34
<h4>Стрелочные функции</h4>
35
<p>Они появились в ES6, полностью изменив вид JavaScript-кода. Давайте рассмотрим это на примере, ведь на первый взгляд они довольно просты:</p>
35
<p>Они появились в ES6, полностью изменив вид JavaScript-кода. Давайте рассмотрим это на примере, ведь на первый взгляд они довольно просты:</p>
36
<p>Но тут существуют нюансы. К примеру, у стрелочных функций нет своего this, а получают они его из контекста создания.</p>
36
<p>Но тут существуют нюансы. К примеру, у стрелочных функций нет своего this, а получают они его из контекста создания.</p>
37
<h4>IIFE и генераторы</h4>
37
<h4>IIFE и генераторы</h4>
38
<p>Immediately Invoked Function Expressions - это функции, выполняемые сразу после объявления.</p>
38
<p>Immediately Invoked Function Expressions - это функции, выполняемые сразу после объявления.</p>
39
<p>Что касается генераторов, то это особенные функции. Мы можем приостановить их работу посредством ключевых слов yield и возобновить позже. В результате мы получаем возможность использовать совершенно новые концепции программирования на JavaScript. Посмотрим на пример кода ниже:</p>
39
<p>Что касается генераторов, то это особенные функции. Мы можем приостановить их работу посредством ключевых слов yield и возобновить позже. В результате мы получаем возможность использовать совершенно новые концепции программирования на JavaScript. Посмотрим на пример кода ниже:</p>
40
<h2>Массивы и объекты в JavaScript</h2>
40
<h2>Массивы и объекты в JavaScript</h2>
41
<p>Массивы дают возможность организовывать несколько разных элементов в коллекцию, предоставляя много удобных методов для работы.</p>
41
<p>Массивы дают возможность организовывать несколько разных элементов в коллекцию, предоставляя много удобных методов для работы.</p>
42
<p>Что касается объектов, то в ES2015 объектные литералы получили ряд новых возможностей: - упрощение синтаксиса включения переменных:</p>
42
<p>Что касается объектов, то в ES2015 объектные литералы получили ряд новых возможностей: - упрощение синтаксиса включения переменных:</p>
43
<p>- прототипы и ключевое слово super:</p>
43
<p>- прототипы и ключевое слово super:</p>
44
<p>- динамические имена свойств:</p>
44
<p>- динамические имена свойств:</p>
45
<p>На следующем примере JavaScript-кода можно увидеть, как получить ключи и значения объекта:</p>
45
<p>На следующем примере JavaScript-кода можно увидеть, как получить ключи и значения объекта:</p>
46
<h2>Примеры циклов в коде на JavaScript</h2>
46
<h2>Примеры циклов в коде на JavaScript</h2>
47
<p>Начнём с<strong>for</strong>:</p>
47
<p>Начнём с<strong>for</strong>:</p>
48
<p>Теперь посмотрим на пример кода с<strong>for-each</strong>:</p>
48
<p>Теперь посмотрим на пример кода с<strong>for-each</strong>:</p>
49
<p>Далее<strong>do-while</strong>:</p>
49
<p>Далее<strong>do-while</strong>:</p>
50
<p>Естественно, не забудем и про<strong>while</strong>:</p>
50
<p>Естественно, не забудем и про<strong>while</strong>:</p>
51
<p>Теперь<strong>for-in</strong>:</p>
51
<p>Теперь<strong>for-in</strong>:</p>
52
<p>Что касается<strong>for-of</strong>, то этот цикл успешно сочетает в себе лаконичность метода массивов forEach и возможность прерывания цикла:</p>
52
<p>Что касается<strong>for-of</strong>, то этот цикл успешно сочетает в себе лаконичность метода массивов forEach и возможность прерывания цикла:</p>
53
<p>Что же, на этом всё. Если же вас интересуют продвинутые курсы по JavaScript, милости просим!</p>
53
<p>Что же, на этом всё. Если же вас интересуют продвинутые курсы по JavaScript, милости просим!</p>
54
<p><em>По материалам статьи "<a>JS-гайд: основные концепции JavaScript с примерами кода</a>".</em></p>
54
<p><em>По материалам статьи "<a>JS-гайд: основные концепции JavaScript с примерами кода</a>".</em></p>
55
55