Мэтта Гранмо
Недавно сотрудник, который учится любить JavaScript, пришел, спросил, был ли простой способ сделать такую функцию:
и вернуть Бар: Parsebar (Bar) Когда бар передается. Но каким-то образом предотвратить возвращение бар как undefined Когда бар не передается, поскольку некоторые употребления этого в кодовой базе не передают его. Он был специально ищет способ сделать это, что не потребует какого-либо рефакторинга (например, изменения из неявного возврата в полнофункциональный корпус функции, используя, если/else, создавая отдельную функцию, чтобы сделать фильтрацию определенных значений и т. Д.).
После какого-то взлома в консоли JavaScript я понял, что возможно следующее:
Вот конденсированный пример, чтобы бросить в консоль, если вы хотите:
Это возможно из-за двух вещей. Во-первых, тот факт, что, хотя оператор распространения не может происходить где-нибудь в качестве токена его можно применять буквально любой тип данных на весь язык .
Обычно известно, что Объект , Массив С Установить И подобные являются итеративными. Тот факт, что все Примитивный Типы также являются действительными операндами оператора распространения позволяет нам распространяться буквально любой Выражение, поскольку все выражения будут оценивать некоторое значение после выполнения.
Если вы не верите мне, добавьте следующее в консоли:
Второе, что помогает нам, это то, что распространение «пустой» значение приводит к не-OP.
Два быстрых примера того, как эта задняя аллея JavaScript может использоваться:
- Охранные выражения (jsx a a jsx, а также то, что использовалось для решения оригинальной проблемы, упомянутой в этом посте):
... (foo && parsefoo (foo)) - Выражения «по умолчанию»:
... (quotalue
Более общий способ ссылаться на все эти вещи могут быть «выражениями распространения». Однако теперь я хотел бы сказать «выражения распространения» не как существительное, а в качестве предложения. Идите с знанием, которые вы можете распространить все Выражения! ?
Оригинал: “https://www.freecodecamp.org/news/spread-expressions-6ad7d5b9b1d4/”