0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>У чисел есть метод, который преобразует их в строку:</p>
1
<p>У чисел есть метод, который преобразует их в строку:</p>
2
<p>Попробуйте ответить на вопрос, заработает ли следующий код - и если да, то что он напечатает на экран?</p>
2
<p>Попробуйте ответить на вопрос, заработает ли следующий код - и если да, то что он напечатает на экран?</p>
3
<p>Синтаксис нескольких подряд идущих точек мы видим впервые, но все операции, которые здесь встречаются, нам знакомы. Все, что произошло в этом коде - это объединение уже известных возможностей языка. Такое в программировании происходит довольно часто. Даже не зная синтаксиса, можно пробовать комбинировать различные подходы, и есть неплохая вероятность, что они заработают.</p>
3
<p>Синтаксис нескольких подряд идущих точек мы видим впервые, но все операции, которые здесь встречаются, нам знакомы. Все, что произошло в этом коде - это объединение уже известных возможностей языка. Такое в программировании происходит довольно часто. Даже не зная синтаксиса, можно пробовать комбинировать различные подходы, и есть неплохая вероятность, что они заработают.</p>
4
<p>Самый простой способ понять, как работает этот код - разбить цепочку на отдельные операции:</p>
4
<p>Самый простой способ понять, как работает этот код - разбить цепочку на отдельные операции:</p>
5
<p>Эти примеры абсолютно эквивалентны. Мы можем выполнять операции последовательно с промежуточным созданием констант, а можем строить непрерывную цепочку из свойств и методов. В цепочках вычисления всегда идут слева направо.</p>
5
<p>Эти примеры абсолютно эквивалентны. Мы можем выполнять операции последовательно с промежуточным созданием констант, а можем строить непрерывную цепочку из свойств и методов. В цепочках вычисления всегда идут слева направо.</p>
6
<p>Еще один пример для закрепления:</p>
6
<p>Еще один пример для закрепления:</p>
7
<p>Подобный код требует небольших умственных усилий. Важно понимать, что .toLowerCase() применяется к результату вызова метода, который находится левее. А метод toUpperCase() возвращает строку. Новички часто делают ошибки в цепочках с методами, забывая ставить вызов:</p>
7
<p>Подобный код требует небольших умственных усилий. Важно понимать, что .toLowerCase() применяется к результату вызова метода, который находится левее. А метод toUpperCase() возвращает строку. Новички часто делают ошибки в цепочках с методами, забывая ставить вызов:</p>
8
<p>Продолжая эту идею, возможно строить бесконечно длинные (хотя, в данном случае, бесполезные) цепочки:</p>
8
<p>Продолжая эту идею, возможно строить бесконечно длинные (хотя, в данном случае, бесполезные) цепочки:</p>
9
<p>С функциями подобный трюк не сработает, так как при обычном использовании они вкладываются друг в друга f(f(f())), что значительно ухудшает анализ. Но это не значит, что нельзя сделать красиво - можно и даже нужно. В других языках это реализуется через<em>композицию функций</em>или<em>пайплайн-оператор</em>. Кстати говоря, он постепенно начинает использоваться и в самом JavaScript:<a>https://github.com/tc39/proposal-pipeline-operator</a></p>
9
<p>С функциями подобный трюк не сработает, так как при обычном использовании они вкладываются друг в друга f(f(f())), что значительно ухудшает анализ. Но это не значит, что нельзя сделать красиво - можно и даже нужно. В других языках это реализуется через<em>композицию функций</em>или<em>пайплайн-оператор</em>. Кстати говоря, он постепенно начинает использоваться и в самом JavaScript:<a>https://github.com/tc39/proposal-pipeline-operator</a></p>