HTML Diff
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>