Как упростить код с помощью оператора распространения

1656535327 kak uprostit kod s pomoshhyu operatora rasprostraneniya

автор Мэтт Гранмо

1*EsKDjaX82lNdGYXSWOst_w

Недавно ко мне пришел коллега, который учится любить JavaScript, и спросил, есть ли простой способ принять такую ​​функцию:

и вернуться bar: parseBar(bar)когда bar проходит. Но однажды помешает вернуться bar как undefined когда bar не передается, поскольку некоторые виды использования в кодовой базе не передают его. Он специально искал способ сделать это, не требующий никакого рефакторинга (например, переход от неявного возвращения к полному телу функции, использование if/else, создание отдельной функции для фильтрации определенных значений и т.п.).

После некоторого взлома в консоли JavaScript я понял, что возможно:

Вот краткий пример, который можно добавить в консоль, если вы хотите:

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

Общеизвестно, что Object, Array, Set и подобные являются повторяющимися. Тот факт, что все примитивный типы также являются действительными операндами оператора распространения, позволяющие нам распространять буквально. любой выражение, поскольку все выражения будут оцениваться до определенного значения после исполнения.

Если вы мне не верите, бросьте следующее в консоль:

Второе, что нам помогает, это то, что распространение пустого значения приводит к неоперациям.

Два быстрых примера того, как можно использовать эту заднюю часть JavaScript:

  • Охранные выражения (а-ля JSX React, а также то, что было использовано для решения первоначальной проблемы, упомянутой в этой публикации): ...(foo && parseFoo(foo))
  • Выражения «по умолчанию»: ...(someValue || someDefault)

Более общим способом ссылаться на все эти вещи могут быть «распространенные выражения». Но сейчас я хотел бы сказать «распространенные выражения» не как существительное, а как предложение. Идите вперед со знанием, которое вы можете распространить все выражения! ?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *