Это также может быть озаглавлено «Как сделать однострочные операторы if/else для вызова одной из двух функций без необходимости присваивания переменных». Йииш! Какой глоток 😆

Хорошо… во-первых, давайте разобьем эту проблему на «пять W», чтобы мы могли точно определить, может ли это быть вам полезно или нет.

  • кто — инженеры-программисты, пишущие код на JavaScript или TypeScript (или языках с тернарами и IIFE)
  • что — использование троичных выражений для выбора между вызовом одной из двух функций.
  • когда — повседневная работа по программированию.
  • where — вместо простых блоков if/else, которые обычно занимают не менее ~4 строк текста в файле исходного кода.
  • почему — чтобы код был легко читаемым и понятным, но при этом как можно короче… а также, потому что это аккуратно, IDK!… пусть следующая демонстрация говорит сама за себя 😜

Итак, в нашей повседневной работе в качестве веб-разработчиков очень часто встречается следующий шаблон в нашем коде. У нас есть переменная. Основываясь на логическом значении некоторого условия, мы присваиваем этой переменной одно из двух возможных значений. Bingo presto, если/иначе, поехали!

Если вы все еще не просто учитесь программировать, вы, вероятно, уже сталкивались с тернарным оператором (?) или, как иногда называют сам код, «тернарным выражением».

Красиво и чисто! Никто не любит остроты больше, чем сообразительные программисты😎
…или комики, наверное, лол 🥁

Что ж, это относится к случаю назначения переменной, но как быть, когда нам нужно что-то сделать в результате наша условная логика?

Это не совсем элегантно. Он выполняет свою работу, но TBCH определенно мог бы быть более кратким. Но как? Ну, это довольно просто, на самом деле.

Теперь, если вы опытны, вы, вероятно, скажете (или закричите?) «Вау, воу, приятель, это не полетит; наш компилятор/линтинг/язык не позволит этому работать!» И как бы я ни любил наших любимых компиляторов — как бы они не давали мне делать глупостей — они могут рассердиться на вас за это. Или ваша IDE может предупредить вас: оператор выражения не является присваиванием или вызовом.

Тернарные выражения часто требуются для присваивания. Это означает, что мы не всегда можем вызывать их, куда захотим; они должны использоваться для назначения значения переменной.

Что ж… есть хакерский способ обойти это с помощью немедленно вызываемых функциональных выражений или IIFE!

Заключая все троичное выражение в круглые скобки, мы, по сути, говорим, что хотим, чтобы оно разрешалось в одно значение. Обратите внимание, что примеры имен функций doSomething и doSomethingElse на самом деле здесь не являются вызовами, а лишь ссылаются на функции по имени. Поступая таким образом, мы позволяем нашему условному оператору привести к значению самой функции вместо ее вызова, и это будет либо doSomething, либо doSomethingElse. И, поскольку обе они являются функциями, мы можем вызывать их, следовательно, использование IIFE для вызова любого значения, на которое разрешается обернутое выражение.

Таким образом, мы не только сократили наш код до сжатого однострочного кода, он также синтаксически корректен и чертовски красив! 👢

Еще один приятный побочный эффект написания кода таким образом заключается в том, что он может подчеркнуть преимущества написания крошечных вспомогательных функций для поддержания чистоты кода. Если бы эффекты ветвления, возникающие при выборе одного из двух путей, были бы больше и сложнее, эта синтаксическая сладость была бы просто невозможна.

Сейчас этот пример не самый лучший в мире 🗺 (шок, я знаю!). Название doSomething нашей вспомогательной функции не имеет здесь значительного значения, но в контексте вашей кодовой базы вы можете многое сказать о том, какие эффекты вы производите, группируя логику вместе.

Это все, что я могу сказать на данный момент. Надеюсь, вы нашли здесь что-то полезное! Если у вас есть, пожалуйста, дайте мне знать с комментарием или несколько хлопков. 💬 👏

Если вы не согласны или нашли недостаток, черт возьми, оставьте и это в комментарии! 😖

Спасибо, что зашли! Удачных приключений в области программирования! 🤓 💻 🏔