March 6th, 2021

Учебник по JavaScript

Понравилась новая версия учебника по языку программирования JavaScript на сайте javascript.ru:

https://learn.javascript.ru
https://github.com/javascript-tutorial/ru.javascript.info

Как я понял, автором учебника изначально (в 2007 году) был программист Илья Кантор (https://javascript.ru/author). Но сейчас учебник выложен на «GitHub» в рамках идеологии открытого программного обеспечения (по-английски «open source») и предлагать изменения в него может кто угодно:

https://github.com/javascript-tutorial

В результате появились версии учебника для разных языков (я насчитал 48 языков), в том числе для английского и русского.

Английский вариант:

https://javascript.info
https://github.com/javascript-tutorial/en.javascript.info

Учебник разбит на 3 части, каждая из которых разбита на разделы, а те, в свою очередь, разбиты на подразделы (каждый подраздел в итоге является отдельной статьей):

Часть 1. Язык программирования JavaScript (в т.ч. 93 подраздела)
(список моих постов по первой части учебника)

Разделы:
1. Введение (4 подраздела)
2. Основы JavaScript (18 подразделов)
3. Качество кода (6 подразделов)
4. Объекты: основы (8 подразделов)
5. Типы данных (12 подразделов)
6. Продвинутая работа с функциями (11 подразделов)
7. Свойства объекта, их конфигурация (2 подраздела)
8. Прототипы, наследование (4 подраздела)
9. Классы (7 подразделов)
10. Обработка ошибок (2 подраздела)
11. Промисы, async/await (8 подразделов)
12. Генераторы, продвинутая итерация (2 подраздела)
13. Модули (3 подраздела)
14. Разное (6 подразделов)

Часть 2. Браузер: документ, события, интерфейсы (в т.ч. 32 подраздела)

Разделы:
1. Документ (11 подразделов)
2. Введение в события (5 подразделов)
3. Интерфейсные события (6 подразделов)
4. Формы, элементы управления (4 подраздела)
5. Загрузка документа и ресурсов (3 подраздела)
6. Разное (3 подраздела)

Часть 3. Тематические разделы (в т.ч. 66 подразделов)

Разделы:
1. Фреймы и окна (3 подраздела)
2. Бинарные данные и файлы (4 подраздела)
3. Сетевые запросы (12 подразделов)
4. Хранение данных в браузере (3 подраздела)
5. Анимация (3 подраздела)
6. Веб-компоненты (7 подразделов)
7. Регулярные выражения (17 подразделов)
8. CSS для JavaScript-разработчика (17 подразделов)

Всего учебник состоит из 191 подраздела (статьи).

Можно приобрести версию учебника в формате PDF (и в формате EPUB), которая содержит более 1450 страниц:

https://learn.javascript.ru/ebook

JavaScript, кодировка текста

Как раньше не дружили авторы учебников с кодировкой текста, так и сегодня не дружат.

Подраздел 2.1 «Привет, мир!» раздела 2 «Основы JavaScript» части 1 «Язык программирования JavaScript» онлайн-учебника, о котором в общих чертах я уже писал:

https://learn.javascript.ru/hello-world

Автор учебника ничего не пишет о кодировке текста. Между тем, оказалось, что если скрипт вставить на страницу HTML, то сообщение на русском языке браузер выведет правильно, а если скрипт вызывается из отдельного файла с расширением JS, то сообщение на русском языке браузер выводит неверно (с кракозябрами).

Оба файла (HTML и JS) у меня набраны в кодировке UTF-8. Как оказалось, браузеру в HTML требуется обязательное указание на кодировку, иначе вместо русских букв будут выведены кракозябры.

После вставки в HTML (в раздел <head></head>) известного тега всё наладилось:

<meta charset="utf-8">

Хорошо хоть, что к каждой статье в учебнике есть комментарии и люди пишут о проблемах с примерами и способах их решения.

Некоторые новички в комментариях после вышеизложенного всё равно не понимают, в чем проблема, так как у них продолжают выскакивать кракозябры. Дело в том, что нужно понимать, в какой кодировке ты набираешь файл JS (многие и не подозревают, что у текста бывают разные кодировки и на разных компьютерах и в разных редакторах по умолчанию могут использоваться разные кодировки текста) и указывать в вышеупомянутом теге именно ту кодировку, в которой набран файл JS.

Для меня после столкновения с кракозябрами при изучении языка C++ эти проблемы уже не представляют проблемы (извиняюсь за тавтологию :)...

Перевод перевода, учебник по JavaScript

Цитата из онлайн-учебника по JavaScript, подраздел 2.3 «Строгий режим — "use strict"» раздела 2 «Основы JavaScript» части 1 «Язык программирования JavaScript» от 5 сентября 2020 г.:

В дальнейшем, когда вы будете использовать консоль браузера для тестирования функций, обратите внимание, что use strict по умолчанию в ней выключен.

Иногда, когда use strict имеет значение, вы можете получить неправильные результаты.

Можно использовать Shift+Enter для ввода нескольких строк и написать в верхней строке use strict:


Тот же фрагмент в английском варианте (https://javascript.info/strict-mode) от 19 мая 2020 г.:

When you use a developer console to run code, please note that it doesn’t use strict by default.

Sometimes, when use strict makes a difference, you’ll get incorrect results.

So, how to actually use strict in the console?

First, you can try to press Shift+Enter to input multiple lines, and put use strict on top, like this:


И там, и там сформулировано так коряво, что пришлось смотреть оба варианта и долго думать прежде, чем смысл сказанного до меня дошел.

Как я понимаю, сначала был написан англоязычный вариант учебника (русскоговорящим автором, то есть Ильей Кантором), а затем был сделан перевод англоязычного варианта на русский язык (причем, либо использовался автоматический перевод с последующей правкой, либо нанимался сторонний переводчик, отнесшийся к своей работе спустя рукава).

Цитата пояснения автора учебника с «GitHub» (https://github.com/javascript-tutorial/ru.javascript.info):

Недавно он был почти полностью переписан, основываясь на английской редакции, если что не так - пожалуйста, пришлите исправляющий Pull Request