javascript-tutorial / ru.javascript.info

Современный учебник JavaScript
https://learn.javascript.ru
Other
3.8k stars 905 forks source link

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

Closed oleedd closed 1 week ago

oleedd commented 1 week ago

Описание

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

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

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

.

Браузер

.

oleedd commented 1 week ago

@iliakan

iliakan commented 1 week ago

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

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

oleedd commented 1 week ago

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

iliakan commented 1 week ago

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

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

oleedd commented 1 week ago

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

oleedd commented 1 week ago

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

iliakan commented 1 week ago

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

oleedd commented 1 week ago

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