javascript-tutorial/ru.javascript.info

Неправильно написано о "?."

oleedd opened this issue · 8 comments

oleedd commented

Описание

Статья: https://learn.javascript.ru/optional-chaining
image
Это оператор. Вот: https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/Optional_chaining
И он есть в списке JS операторов.

image
Его нельзя сполифилить, поскольку это оператор. Мы не можем объяснить движку, что такое ?..
Этот общий блок "Новая возможность" здесь вводит людей в заблуждение, будто для него возможно написать полифил. Строка о полифиле не должна появляться.

Как воспроизвести?

.

Браузер

.

Это не оператор. Пруф: https://tc39.es/ecma262/#sec-punctuators
MDN - не спецификация.

Вместо слова полифил - наверно что-то другое лучше использовать, но что? Там синтаксическое преобразование, разумеется.

oleedd commented

Не знал, что есть "punctuators". В учебнике вроде как нет такого. Всегда считал математические знаки операторами.
Может, "может понадобиться Babel"?

Да, мне тоже кажется такое понятие вводить не надо, поэтому я и написал "синтаксическая конструкция" (которой пунктуатор является).

А Babel - единственный в своем роде? Нет альтернатив?

oleedd commented

Хотя ?. — это не конструкция, оно создаёт конструкцию. Это ж не конструкция из точки и вопросительного знака. Можно "это не оператор, а пунктуатор/токен, формирующий специальную синтаксическую конструкцию". Конечно, вводить таким образом новый термин не желательно, но тогда не знаю, как написать.
ChatGPT говорит, что прямо такого, как Babel, нет.

oleedd commented

Может, "разделитель, формирующий специальную синтаксическую конструкцию"? Это как раз синоним для "пунктуатор".

Мне кажется, тут не стоит придираться к терминам до такой степени. Синтаксические конструкции состоят из более мелких (так формируется грамматика). Что касается babel вместо "полифил", то получается уместное изменение.

oleedd commented

Здесь можно привести в пример лингвистику. Фразы — это синтаксические конструкции, состоящие из слов. Но слова — это не синтаксические конструкции, а синтаксические единицы. Поскольку на более мелкие синтаксические элементы они уже не делятся (не сконструированы из более мелких). Получается, что ?. — это синтаксическая единица. В спецификации вместо этого используется термин "токен".
Только с "Babel" желательно "для старых браузеров", поскольку Babel мы не ставим в браузер. Да и вообще с "в" разговорный вариант, наверно, лучше везде заменить на "для".