0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<h2>Транскрипт урока</h2>
1
<h2>Транскрипт урока</h2>
2
<p>Помните свою первую программу "hello, world"?</p>
2
<p>Помните свою первую программу "hello, world"?</p>
3
<p>Сейчас вы уже знаете, что здесь происходит вызов функции, а функция console.log принимает аргумент. В данном случае аргумент - не число, а "строка". Так мы называем фрагменты текста в программировании, потому что они как последовательность букв на веревке.</p>
3
<p>Сейчас вы уже знаете, что здесь происходит вызов функции, а функция console.log принимает аргумент. В данном случае аргумент - не число, а "строка". Так мы называем фрагменты текста в программировании, потому что они как последовательность букв на веревке.</p>
4
<p>Строки есть везде. Сейчас я читаю сценарий, и текстовый файл - это длинная строка. Веб-сайт, на котором вы смотрите эти видео, содержит множество слов - всё это строки. Работа Google запоминать строки - в этом суть поиска. Файлы и папки в вашем компьютере идентифицируются через их названия, которые так же являются всего лишь строками.</p>
4
<p>Строки есть везде. Сейчас я читаю сценарий, и текстовый файл - это длинная строка. Веб-сайт, на котором вы смотрите эти видео, содержит множество слов - всё это строки. Работа Google запоминать строки - в этом суть поиска. Файлы и папки в вашем компьютере идентифицируются через их названия, которые так же являются всего лишь строками.</p>
5
<p>Так же, как мы это делали с числами, мы можем создать константу из строки:</p>
5
<p>Так же, как мы это делали с числами, мы можем создать константу из строки:</p>
6
<p>Вы можете использовать одиночные кавычки или двойные, не так важно, главное чтобы они были одинаковые и в начале и в конце строки.</p>
6
<p>Вы можете использовать одиночные кавычки или двойные, не так важно, главное чтобы они были одинаковые и в начале и в конце строки.</p>
7
<p>Если вам необходимо использовать реальные кавычки внутри строки, тогда используйте другой знак для её создания. Например:</p>
7
<p>Если вам необходимо использовать реальные кавычки внутри строки, тогда используйте другой знак для её создания. Например:</p>
8
<p>Здесь одиночные кавычки используются для формулирования или ограничения строки, и тогда у нас есть возможность поставить двойные внутри. Или наоборот:</p>
8
<p>Здесь одиночные кавычки используются для формулирования или ограничения строки, и тогда у нас есть возможность поставить двойные внутри. Или наоборот:</p>
9
<p>Двойные снаружи - одиночные внутри.</p>
9
<p>Двойные снаружи - одиночные внутри.</p>
10
<p>Но что делать, если такое невозможно, и вам нужно использовать одинаковый тип кавычек и для формулировки строки и внутри неё. Если вы попробуете сделать так</p>
10
<p>Но что делать, если такое невозможно, и вам нужно использовать одинаковый тип кавычек и для формулировки строки и внутри неё. Если вы попробуете сделать так</p>
11
<p>то получите ошибку, потому что ваша строка поломана. Программа сломается в этом месте, потому что тут присутствует вторая закрывающая кавычка такого же типа, а затем идёт странное слово, которое ничего не означает, а потом новая строка. Это неправильный JavaScript.</p>
11
<p>то получите ошибку, потому что ваша строка поломана. Программа сломается в этом месте, потому что тут присутствует вторая закрывающая кавычка такого же типа, а затем идёт странное слово, которое ничего не означает, а потом новая строка. Это неправильный JavaScript.</p>
12
<p>Нам нужно объяснить интерпретатору JavaScript, что некоторые кавычки он должен воспринимать иначе. Они не должны означать "начало строки" или "конец строки", они должны означать "символ кавычек".</p>
12
<p>Нам нужно объяснить интерпретатору JavaScript, что некоторые кавычки он должен воспринимать иначе. Они не должны означать "начало строки" или "конец строки", они должны означать "символ кавычек".</p>
13
<p>Это называется "экранированием". Добавьте символ экранирования, обратный слеш \ перед символом, и символ "изолируется" от своей специфической роли и превратится в обычный знак в строке.</p>
13
<p>Это называется "экранированием". Добавьте символ экранирования, обратный слеш \ перед символом, и символ "изолируется" от своей специфической роли и превратится в обычный знак в строке.</p>
14
<p>Этот символ экранирования может использоваться для включения других специальных символов в строку.</p>
14
<p>Этот символ экранирования может использоваться для включения других специальных символов в строку.</p>
15
<p>Тут есть три момента.</p>
15
<p>Тут есть три момента.</p>
16
<p>Первый: если нам нужен обратный слеш в строке, то он должен быть экранирован другим обратным слешем.</p>
16
<p>Первый: если нам нужен обратный слеш в строке, то он должен быть экранирован другим обратным слешем.</p>
17
<p>Второе: обратный слеш-t это не "экранируемый t-символ": вам не нужно экранировать "t", "t" - это не специальный символ; вся конструкция обратный слеш-t - это специальная<strong>управляющая последовательность</strong>- она представляет собой единичную табуляцию, по сути - длинный пробел.</p>
17
<p>Второе: обратный слеш-t это не "экранируемый t-символ": вам не нужно экранировать "t", "t" - это не специальный символ; вся конструкция обратный слеш-t - это специальная<strong>управляющая последовательность</strong>- она представляет собой единичную табуляцию, по сути - длинный пробел.</p>
18
<p>Третье: обратный слеш-n - это другая управляющая последовательность, которая представляет собой новую строчку. Считай, что вы нажмёте клавишу Enter, когда набираете текст. Поэтому, всё, что следует дальше, перейдет на новую строчку .</p>
18
<p>Третье: обратный слеш-n - это другая управляющая последовательность, которая представляет собой новую строчку. Считай, что вы нажмёте клавишу Enter, когда набираете текст. Поэтому, всё, что следует дальше, перейдет на новую строчку .</p>
19
<p>Теперь давайте попробуем написать функцию. Она будет принимать строку - имя и возвращать другую строку - приветствие. Вот как это должно работать:</p>
19
<p>Теперь давайте попробуем написать функцию. Она будет принимать строку - имя и возвращать другую строку - приветствие. Вот как это должно работать:</p>
20
<p>Эта функция должна уметь каким-то образом принимать входящую строку и склеивать её с другой строкой. Такой процесс называется "конкатенацией" и в JavaScript он реализуется знаком плюс, как при сложении чисел:</p>
20
<p>Эта функция должна уметь каким-то образом принимать входящую строку и склеивать её с другой строкой. Такой процесс называется "конкатенацией" и в JavaScript он реализуется знаком плюс, как при сложении чисел:</p>
21
<p>Теперь другой пример. Эта функция принимает строку и возвращает ту же строку, но без каждой второй буквы. Например, "California" становится "Clfri".</p>
21
<p>Теперь другой пример. Эта функция принимает строку и возвращает ту же строку, но без каждой второй буквы. Например, "California" становится "Clfri".</p>
22
<p>Такие квадратные скобки позволяют нам получать индивидуальные символы из строки. Как и во многих процессах в программировании, вы начинаете отсчёт с 0, а не от 1. Поэтому первый символ str это str[0], второй - str[1], и так далее. Это число называется "индексом".</p>
22
<p>Такие квадратные скобки позволяют нам получать индивидуальные символы из строки. Как и во многих процессах в программировании, вы начинаете отсчёт с 0, а не от 1. Поэтому первый символ str это str[0], второй - str[1], и так далее. Это число называется "индексом".</p>
23
<p>Функция skip принимает аргумент, создаёт две переменных - i для счётчика и result для итоговой строки. Счётчик - это 0, потому что нам нужно начать с первого символа, а result это пустая строка - мы будем добавлять символы к ней один за другим.</p>
23
<p>Функция skip принимает аргумент, создаёт две переменных - i для счётчика и result для итоговой строки. Счётчик - это 0, потому что нам нужно начать с первого символа, а result это пустая строка - мы будем добавлять символы к ней один за другим.</p>
24
<p>Затем следует цикл while, с условием , что "i меньше, чем длина строки". Длина означает "сколько символов". Длина строки "cats" - 4 - в ней 4 символа, 4 буквы.</p>
24
<p>Затем следует цикл while, с условием , что "i меньше, чем длина строки". Длина означает "сколько символов". Длина строки "cats" - 4 - в ней 4 символа, 4 буквы.</p>
25
<p>Пока счётчик меньше, чем длина, мы склеиваем или конкатенируем результирующую строку с символом по индексу i. Затем добавляем 2 к счётчику. Два, а не один, потому что нам нужно пропустить один символ.</p>
25
<p>Пока счётчик меньше, чем длина, мы склеиваем или конкатенируем результирующую строку с символом по индексу i. Затем добавляем 2 к счётчику. Два, а не один, потому что нам нужно пропустить один символ.</p>
26
<p>В какой-то момент счетчик станет достаточно большим для того, чтобы условие цикла стало ложным, и функция вернёт result.</p>
26
<p>В какой-то момент счетчик станет достаточно большим для того, чтобы условие цикла стало ложным, и функция вернёт result.</p>
27
<p>Давайте попробуем вызвать функцию с аргументом 'cats':</p>
27
<p>Давайте попробуем вызвать функцию с аргументом 'cats':</p>
28
<p>Длина 'cats' - 4. Несмотря на то, что индексы начинаются с 0, длина - это действительное количество. 'c' - не 0 букв, это одна буква. Поэтому длина 'cats' - 4, но индекс его последней буквы - 3.</p>
28
<p>Длина 'cats' - 4. Несмотря на то, что индексы начинаются с 0, длина - это действительное количество. 'c' - не 0 букв, это одна буква. Поэтому длина 'cats' - 4, но индекс его последней буквы - 3.</p>
29
<ol><li>0 меньше четырёх, поэтому войти в цикл while</li>
29
<ol><li>0 меньше четырёх, поэтому войти в цикл while</li>
30
<li>конкатенировать строку с символом по индексу 0 - это 'c'</li>
30
<li>конкатенировать строку с символом по индексу 0 - это 'c'</li>
31
<li>увеличить счётчик на 2</li>
31
<li>увеличить счётчик на 2</li>
32
<li>2 меньше 4, поэтому повторить</li>
32
<li>2 меньше 4, поэтому повторить</li>
33
<li>конкатенировать строку с символом по индексу 2 - это 't'. строка теперь стала 'ct'</li>
33
<li>конкатенировать строку с символом по индексу 2 - это 't'. строка теперь стала 'ct'</li>
34
<li>увеличить счётчик на 2</li>
34
<li>увеличить счётчик на 2</li>
35
<li>4 не меньше 4, поэтому больше не повторять</li>
35
<li>4 не меньше 4, поэтому больше не повторять</li>
36
<li>вернуть результат - 'ct'</li>
36
<li>вернуть результат - 'ct'</li>
37
</ol><p>Вас ждут тест и практическое упражнение.</p>
37
</ol><p>Вас ждут тест и практическое упражнение.</p>
38
<h2>Дополнение к уроку</h2>
38
<h2>Дополнение к уроку</h2>
39
<h3>Неизменяемость</h3>
39
<h3>Неизменяемость</h3>
40
<p>В JavaScript строки являются неизменяемыми, так же говорят "immutable". Это означает, что какие бы вы к ним не применяли функции, они не производят in-place замены (то есть не производят изменения самой строки). Любые строковые функции, примененные к строкам, возвращают<strong>новую</strong>строку. Это верно и в том случае, когда мы обращаемся к конкретному символу в строке.</p>
40
<p>В JavaScript строки являются неизменяемыми, так же говорят "immutable". Это означает, что какие бы вы к ним не применяли функции, они не производят in-place замены (то есть не производят изменения самой строки). Любые строковые функции, примененные к строкам, возвращают<strong>новую</strong>строку. Это верно и в том случае, когда мы обращаемся к конкретному символу в строке.</p>
41
<p>Пример:</p>
41
<p>Пример:</p>
42
<h3>Лексикографический порядок</h3>
42
<h3>Лексикографический порядок</h3>
43
<p>Лексикографический порядок - это, другими словами, алфавитный порядок. Такой порядок используется в словарях, телефонных справочниках, записных книжках и так далее.</p>
43
<p>Лексикографический порядок - это, другими словами, алфавитный порядок. Такой порядок используется в словарях, телефонных справочниках, записных книжках и так далее.</p>
44
<p>В JavaScript вы можете сравнивать строки с помощью > и <, и сравнение будет происходить именно лексикографически.</p>
44
<p>В JavaScript вы можете сравнивать строки с помощью > и <, и сравнение будет происходить именно лексикографически.</p>
45
<p>Помните, '8' это не число, а строка.</p>
45
<p>Помните, '8' это не число, а строка.</p>
46
<h3>Интерполяция</h3>
46
<h3>Интерполяция</h3>
47
<p>Кроме одиночных '' и двойных кавычек "", современный JavaScript содержит обратные тики (backticks):</p>
47
<p>Кроме одиночных '' и двойных кавычек "", современный JavaScript содержит обратные тики (backticks):</p>
48
<p>``</p>
48
<p>``</p>
49
<p>С обратными тиками вы можете использовать<strong>интерполяцию</strong>, вместо конкатенации. Вот, смотрите:</p>
49
<p>С обратными тиками вы можете использовать<strong>интерполяцию</strong>, вместо конкатенации. Вот, смотрите:</p>
50
<p>Такой код выведет на экран His name was Alex and his age was 22. Внутрь ${} вы можете поместить любое выражение.</p>
50
<p>Такой код выведет на экран His name was Alex and his age was 22. Внутрь ${} вы можете поместить любое выражение.</p>
51
<p><strong>Интерполяция</strong>- способ соединения строк через вставку значений переменных в строку-шаблон с помощью фигурных скобок.</p>
51
<p><strong>Интерполяция</strong>- способ соединения строк через вставку значений переменных в строку-шаблон с помощью фигурных скобок.</p>
52
<p><strong>Интерполяция предпочтительнее конкатенации</strong>. Мы советуем не использовать конкатенацию вообще. Вот некоторые из причин:</p>
52
<p><strong>Интерполяция предпочтительнее конкатенации</strong>. Мы советуем не использовать конкатенацию вообще. Вот некоторые из причин:</p>
53
<ul><li>Такой код заставляет больше думать, потому что синтаксически + больше смахивает на сложение.</li>
53
<ul><li>Такой код заставляет больше думать, потому что синтаксически + больше смахивает на сложение.</li>
54
<li>Из-за слабой типизации можно легко получить не тот результат. Конкатенация может породить ошибки.</li>
54
<li>Из-за слабой типизации можно легко получить не тот результат. Конкатенация может породить ошибки.</li>
55
<li>Сложные строки при использовании конкатенации невозможно нормально разобрать в голове и понять, как они устроены.</li>
55
<li>Сложные строки при использовании конкатенации невозможно нормально разобрать в голове и понять, как они устроены.</li>
56
</ul><h2>Выводы</h2>
56
</ul><h2>Выводы</h2>
57
<ul><li>Строка - это последовательность символов</li>
57
<ul><li>Строка - это последовательность символов</li>
58
<li>Пустая строка - это тоже строка (последовательность нуля символов)</li>
58
<li>Пустая строка - это тоже строка (последовательность нуля символов)</li>
59
<li>Обозначается единичными или двойными кавычками</li>
59
<li>Обозначается единичными или двойными кавычками</li>
60
</ul><p>Создание строки с константой:</p>
60
</ul><p>Создание строки с константой:</p>
61
<p>Возможно включить кавычку одного типа внутрь строки, окружив её кавычками другого типа:</p>
61
<p>Возможно включить кавычку одного типа внутрь строки, окружив её кавычками другого типа:</p>
62
<p>Если в строке используются кавычки того же типа, они должны быть<strong>экранированы</strong>с помощью обратного слеша \:</p>
62
<p>Если в строке используются кавычки того же типа, они должны быть<strong>экранированы</strong>с помощью обратного слеша \:</p>
63
<p>Если строка включает обратный слеш (именно как символ, который хочется иметь в строке), он должен быть экранирован другим обратным слешем:</p>
63
<p>Если строка включает обратный слеш (именно как символ, который хочется иметь в строке), он должен быть экранирован другим обратным слешем:</p>
64
<p>Также существуют<strong>управляющие символы</strong>- специальные комбинации, которые генерируют невидимые детали:</p>
64
<p>Также существуют<strong>управляющие символы</strong>- специальные комбинации, которые генерируют невидимые детали:</p>
65
<p>\t - это табуляция, \n это перенос на новую строку.</p>
65
<p>\t - это табуляция, \n это перенос на новую строку.</p>
66
<h3>Конкатенация строк</h3>
66
<h3>Конкатенация строк</h3>
67
<p>Строки могут склеиваться друг с другом. Такой процесс называется<strong>конкатенацией</strong>и задаётся символом +:</p>
67
<p>Строки могут склеиваться друг с другом. Такой процесс называется<strong>конкатенацией</strong>и задаётся символом +:</p>
68
<p>Строки будут склеены в том порядке, в котором они указаны: "mos" + "cow" → "moscow", а "cow" + "mos" → "cowmos"</p>
68
<p>Строки будут склеены в том порядке, в котором они указаны: "mos" + "cow" → "moscow", а "cow" + "mos" → "cowmos"</p>
69
<h3>Доступ к индивидуальным символам</h3>
69
<h3>Доступ к индивидуальным символам</h3>
70
<p>str[i] это i-ый символ строки str, начинающейся с 0. Например, "hexlet"[0] это h, а "hexlet"[2] это x.</p>
70
<p>str[i] это i-ый символ строки str, начинающейся с 0. Например, "hexlet"[0] это h, а "hexlet"[2] это x.</p>
71
<p>Вот функция, которая принимает строку и возвращает копию этой строки без каждой второй буквы. Например, "hexlet" становится "hxe".</p>
71
<p>Вот функция, которая принимает строку и возвращает копию этой строки без каждой второй буквы. Например, "hexlet" становится "hxe".</p>
72
<p>str.length это длина str, то есть количество символов. Это просто количество, поэтому мы<strong>не</strong>начинаем отсчёт от 0. Например, "food".length это 4.</p>
72
<p>str.length это длина str, то есть количество символов. Это просто количество, поэтому мы<strong>не</strong>начинаем отсчёт от 0. Например, "food".length это 4.</p>